在使用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;
}
这似乎是一个简单的问题,但我需要一些外部的观点!我不认为我在这里关注的是真正的问题。谢谢你
2条答案
按热度按时间jgwigjjp1#
问题就在这里:
in.next();
行将读取第一个可用的标记(非空格字符序列),并将其从输入中丢弃。last = in.nextLine();
将当前输入行的其余部分保存到String last中,但是您想要的姓氏已经被丢弃了,所以该行中没有任何内容。在.nextLine()中看到的输入中的第一个字符将是一个换行符,因此它只是返回一个空字符串,就好像该行中没有任何内容一样。你想保存www.example.com()返回的Stringin.next,而不是保存在.nextLine()中,如下所示:
uwopmtnx2#