传递输入后从字符串中丢失数据

时间:2013-02-26 06:28:52

标签: java string java.util.scanner

我正在尝试将数据写入包含名称和数字的对象,但由于某种原因,该名称在使用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()的原因是因为没有它,程序将打印所有内容,直到我要求输入整数。即使我将String设置为默认文本,在尝试通过用户输入将其更改为其他名称后,String也会立即变为null。

最后,当我对整数执行相同的测试时,它们可以完美地工作。

有关可能导致我的String不存储任何内容的任何建议吗?

2 个答案:

答案 0 :(得分:1)

如何声明变量input

Scanner input = new Scanner(System.in);

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

addName = input.next();
System.out.println("2. addName: " + addName);

答案 1 :(得分:1)

我认为问题位于nexLine(),这是文档:

  

使此扫描程序超过当前行并返回该输入   被跳过了。此方法返回当前行的其余部分,   排除末尾的任何行分隔符。该职位设定为   下一行的开头。

     

由于此方法继续搜索输入以查找a   行分隔符,它可以缓冲搜索该行的所有输入   如果没有行分隔符则跳过。

     

返回:       被跳过的行

也许您可以使用next()

相关问题