0

我正在尝试将数据写入包含名称和数字的对象,但由于某种原因,名称在使用初始化后立即丢失了数据Scanner(这都在名为 的方法中调用private void addPerson()

    String addName = "Just an empty String."; 
    System.out.println(addName + " testing");  // (Just an empty String. testing)
    System.out.println("Name: ");       
    addName = input.nextLine(); 
    System.out.println(addName); // null no matter what is entered
    input.next();
    System.out.println(addName + " again"); // Still null ( again) 

输入名称后,我尝试查看名称是否已存储,但没有。第一次打印甚至没有在输出中注册。在我按下 ENTER 后,接下来要显示的是最后一行,但它在输出屏幕中“再次”显示。我有的原因input.next()是因为没有它,程序将打印所有内容,直到我要求输入整数。即使我将字符串设置为默认文本,在尝试通过用户输入将其更改为不同的名称后,字符串也会立即变为空。

最后,当我对整数执行相同的测试时,它们工作得很好。

关于可能导致我的字符串不存储任何内容的任何建议?

4

2 回答 2

1

我认为问题出在nexLine(),这里是文档:

将此扫描器前进到当前行并返回被跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。位置设置为下一行的开头。

由于此方法继续搜索输入以查找行分隔符,因此如果不存在行分隔符,它可能会缓冲所有搜索要跳过的行的输入。

返回:被跳过的行

也许您可以使用next()

于 2013-02-26T06:36:27.760 回答
1

你如何声明变量input

Scanner input = new Scanner(System.in);

要再次打印addName,请将其更改为

addName = input.next();
System.out.println("2. addName: " + addName);
于 2013-02-26T06:35:12.903 回答