2015-10-07 71 views
1

我正在制作一个程序,该程序从用户处取得一个字符串,并用分隔符逐字分开,并且它几乎完成。但是,在第一个完整循环之后,来自用户的下一个输入不会通过最后的while循环。如何在循环中保留字符串输入

下面是我在谈论的代码段:

do 
    { 
    System.out.println ("\nEntered String: " + s1 + "\n"); 

    while (input.hasNext()) 
    { 
     word++; 

     System.out.println ("Word #" + word + ": \t" + input.next()); 
    } 
     System.out.print ("\nEnter 'q' to quit, enter string to continue: \t"); 
     s1 = scan.nextLine(); 

    } while (!s1.equals("q")); 

我想,我需要周围的字增量和打印线另一while循环,并有input.hasNext内继续序列( )循环,因为这是我得到一个类似的程序使用int来工作,但我不知道这将如何处理字符串。

有什么建议?

编辑:澄清,现在我的代码的输出是这样的:

输入一句:这是一个句子

输入的字符串:这是一个句子

词#1 :本

字#2:是

字#3:一个

词#4:句子

输入 'Q' 退出,输入字符串继续:另一句话

输入的字符串:另一句话

输入 'Q' 退出,输入字符串继续:

我需要“的另一句话”打印出像“这是一句”

+0

[java:while循环语句在进入大括号之前的分号之前带有分号?](http:// stackoverflow。com/questions/12658242/java-while-loop-statement-with-a-semicolon-before-going-into-statements-betwe) –

+0

'input'的值是什么? – nubteens

+0

输入用于分隔符,用于输入用户输入的字符串s1。它的工作方式与此处几乎相同:http://javatutorialhq.com/java/util/scanner-class-tutorial/hasnext-string-pattern-method-example/但我已更改我的代码,以便它允许用户输入从扫描仪。 – Len

回答

0

我不明白到底出了什么问题,因为您的代码不编译。但是不需要另一个循环。以下是一些可用的代码:

Scanner scan = new Scanner(System.in); 
System.out.print("\nEnter a sentence:"); 
String s1 = scan.nextLine(); 

do 
{ 
    System.out.println("\nEntered String: " + s1 + "\n"); 

    Scanner input = new Scanner(s1); 
    int word = 0; 
    while (input.hasNext()) 
    { 
     word++; 
     System.out.println("Word #" + word + ": \t" + input.next()); 
    } 

    System.out.print("\nEnter 'q' to quit, enter string to continue: \t"); 
    s1 = scan.nextLine(); 

} while(!s1.equals("q")); 

scan.close(); 
+0

修好了!我只需要将扫描仪输入放在do-while循环中。谢谢! – Len

0

你可以试试这个,如果它的工作原理。它与你需要的结果相同。

Scanner scan = new Scanner(System.in); 
    String s1 = scan.nextLine(); 
    do { 
     String input[] = s1.split(" "); 
     System.out.println ("\nEntered String: " + s1 + "\n"); 
     for(int i = 0; i < input.length; i++) { 
      System.out.println ("Word #" + i+1 + ": \t" + input[i]); 
     } 
     System.out.print ("\nEnter 'q' to quit, enter string to continue: \t"); 
     s1 = scan.nextLine(); 
    } while (!s1.equals("q")); 
0

您正在使用

while (input.hasNext()) 

我想输入一个扫描对象,所以你应该做这样的事情在使用之前(但在进入循环前):

Scanner input = new Scanner(System.in); 
0

我不推荐使用scanner.next()while循环,我会推荐使用以下API:

String.split 
Scanner.nextLine 

事情是这样的:

while(input.hasNextLine()) { 
    String line = input.nextLine(); 
    String[] words = line.split("delimeter"); 
    if(words.length < 1 || words[words.length - 1].equals("q")) { 
     break; 
    } 
} 
相关问题