【问题标题】:How to keep a string input within a loop如何将字符串输入保持在循环中
【发布时间】:2015-10-07 00:53:32
【问题描述】:

我正在制作一个程序,它从用户那里获取一个字符串,并用分隔符逐字分隔它,它几乎完成了。但是,在第一个完整循环之后,用户的下一个输入不会通过最后一个 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 循环来围绕单词 increment 和 print 行,并在 input.hasNext() 循环中使用 continue 序列,因为这就是我使用 int 获得类似程序工作的方式,但我'我不确定这将如何处理字符串。

有什么建议吗?

编辑:澄清一下,现在我的代码输出如下所示:

输入一个句子:这是一个句子

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

单词#1:这个

字#2:是

单词#3:a

单词#4:句子

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

输入的字符串:另一个句子

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

我需要“另一个句子”来打印出“这是一个句子”

【问题讨论】:

标签: java string loops input


【解决方案1】:

我不明白到底是什么问题,因为您的代码无法编译。但是不需要另一个循环。下面是一些有效的代码:

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();

【讨论】:

  • 解决了!我只需要将扫描仪输入放在 do-while 循环中。谢谢!
【解决方案2】:

如果可行的话,你可以试试这个。它与您需要的结果相同。

    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"));

【讨论】:

    【解决方案3】:

    你正在使用

     while (input.hasNext())
    

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

    Scanner input = new Scanner(System.in);
    

    【讨论】:

      【解决方案4】:

      我建议不要在 while 循环中使用 scanner.next(),而是使用以下 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;
          }
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-13
        • 1970-01-01
        • 2013-05-14
        相关资源
        最近更新 更多