java nextLine()和next()在命名对象时给出空格

piok6c0g  于 2023-05-27  发布在  Java
关注(0)|答案(2)|浏览(116)

在使用next()跳过用户输入后的额外一行之后,我尝试让nextLine()获取用户当前输入的变量名。我的程序是使用基于文本的菜单,这是唯一的方式,我已经能够使菜单流畅(沿着做,而循环,你有什么,但我离题)我的问题是这样的:虽然我知道我试图命名的对象正在从我的main方法接收数据,但它没有给它正确的名称,只是给它一个空白字符。我知道这一点,因为它重命名了对象,但它没有正确地重命名对象,它只是给出了一个空格(我在构造函数方法中为对象的名称变量提供了一个“N/A”)。我现在和将来如何解决这个问题?
主方法片段

String last;        
        selector = in.nextInt();
        if (selector == 1)
        {
           System.out.print("Please enter Last Name: ");
           in.next();
           last = in.nextLine();
           entry.setLast(last);
           terminator = true;
        }

对象命名方法

private static String last_name;
   public static String setLast(String a)
   {
      last_name = a;
      return last_name;
   }

这似乎是一个简单的问题,但我需要一些外部的观点!我不认为我在这里关注的是真正的问题。谢谢你

jgwigjjp

jgwigjjp1#

问题就在这里:

in.next();
last = in.nextLine();
entry.setLast(last);

in.next();行将读取第一个可用的标记(非空格字符序列),并将其从输入中丢弃。
last = in.nextLine();将当前输入行的其余部分保存到String last中,但是您想要的姓氏已经被丢弃了,所以该行中没有任何内容。在.nextLine()中看到的输入中的第一个字符将是一个换行符,因此它只是返回一个空字符串,就好像该行中没有任何内容一样。
你想保存www.example.com()返回的Stringin.next,而不是保存在.nextLine()中,如下所示:

last = in.next();
in.nextLine();
entry.setLast(last);
uwopmtnx

uwopmtnx2#

package stackoverflow.q_24947751;

import java.util.Scanner;

public class UserInput {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("To exit please type 'Quit'");
        while (sc.hasNext()) {
            String input = sc.nextLine();
            if(!input.equalsIgnoreCase("Quit")) {
                System.out.println("Enter first name");
                String name = sc.nextLine();
                System.out.println("Enter surname");
                String surname = sc.nextLine();
                System.out.println("Enter number");
                try {
                    Integer.parseInt(sc.nextLine());
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                }
            } else {
                break;
            }
        }
    }
}

//Output:
//To exit please type 'Quit'
//Proceed
//Enter first name
//Nikhil
//Enter surname
//Joshi
//Enter number
//22

相关问题