2013-11-25 78 views
2

我想使用java.util.Scanner()从控制台读取全名,并将该值赋给字符串。例如使用java.util.Scanner()读取多个字符串()

;

在控制台输入“John Smith”。击中返回并且 String s =“John Smith”;

我试图写一个readString方法来做到这一点,但它的循环锁定。有谁知道一个soloution ?.

我的部分代码。

System.out.println("Name: "); 
String name = readString(); 

和我破碎的方法。

private String readString() 
{ 
    String s =""; 
    while(scanner.hasNext()) 
    s += scanner.next(); 
    return s; 
} 
+0

认为你输错,但它应该是'scanner.hasNext( )' –

+0

这是一个错字,否则他的程序不会c ompile。 – Maroun

+0

错字固定。谢谢。 –

回答

3

使用nextLine()方法,而不是next()

做这样

private String readString() 
{ 
    Scanner scanner = new Scanner(System.in); 
    return scanner.nextLine(); 
} 
+0

有点矫枉过正,你不觉得吗? – Sionnach733

+1

@ Sionnach733感谢您的建议,我同意这一点,但我不想混淆OP的 – Prabhakaran

+0

我使用扫描仪的一个实例从控制台的多行读取。使用scanner.nextLine()为第一行返回空字符串,然后正确地工作。上面的解决办法已经解决了这个问题。创建一个新的实例,为每个阅读它正常工作。感谢大家的帮助。 –

1

这可能会帮助你

public static void main(String[] args) { 
    System.out.println("Name: "+getInput()); 
} 

private static String getInput() { 
    Scanner scanner = new Scanner(System.in); 
    return scanner.nextLine(); 
}