2

有谁知道我怎样才能让扫描仪忽略空间?我想输入名字和第二个名字,但扫描仪不让我输入,我想保存全名

String name;

System.out.print("Enter name: ");
name = scan.next(); //Ex: John Smith

System.out.println(name);

编辑:新问题.. 在我的扩展程序中使用 nextLine 时,nextLine 只是忽略了整个问题并继续前进,没有机会扫描名称。

4

6 回答 6

3

Scanner#next()在空格周围分割线。 Scanner.nextLine()没有,因此留下空格。

name = scan.nextLine(); //Ex: John Smith
于 2012-10-07T22:56:08.013 回答
2

使用scanner.nextLine()which 读取整行,而不是scan.next();

例子:

name = scan.nextLine();

阅读Scanner类的 oracle 文档以获取可用方法。

于 2012-10-07T22:53:06.350 回答
2

Scanner.next使用空格分隔,以读取整行,您可以使用:

name = scan.nextLine(); 
于 2012-10-07T22:54:03.537 回答
2

好吧,首先是您的 System.out.print(); 通话有缺陷。里面的一切都必须在引号内 System.out.print("Enter name: ");

scan.next()获取流中的下一个字符,而scan.nextLine()获取下一行(由 EOL 字符终止),这可能对您更有帮助。

之后,您可以创建一个单词数组,就像 String[] broken = name.split(" "); 它将您输入的所有单词放入以空格分隔的单词一样。

然后你可以去像

for(int i = 0; i < broken.size; i++)
{
    System.out.print(broken[i] + " ");
}
System.out.println();
于 2012-10-07T22:57:37.383 回答
1

听起来您想阅读整行(减去行尾)。如果有人输入“helen r. smith”,您可以读取该行:

name = scan.nextLine();
于 2012-10-07T22:52:30.417 回答
1

你可以这样做

import java.util.*;
class scanner2
{
public static void main(String args[])
    {
    Scanner in= new Scanner(System.in);
    System.out.println("enter the name");
    String name= in.nextLine();//for name with spaces with more than one word or for    one word.

    System.out.println("enter single word");
    String rl= in.next();//single word name

    System.out.println("name is "+name+"  rl is "+rl);

    }

}

执行它你会得到你的答案。

于 2012-10-07T23:46:31.043 回答