我正在尝试输入字符串直到"停止","停止","退出"或"退出"进入

时间:2015-01-14 23:59:11

标签: java string

我正在为计算机科学课创建一个程序我正在用户可以输入字符串(尽可能多的人),直到单词" stop"," Stop" ,"退出",或"退出"进入。此外,当输入这些单词时,程序应输入存储在变量" wordcount"中的int。这样它就可以打印到控制台上了 向用户显示他们输入的单词数,不包括用于停止程序的单词。我是新手代码,不知道如何做到这一点。这是我失败的尝试:

package repeatWords;

import java.util.Scanner;

public class RepeatWords {
    public static void main(String[] args)
    {
         System.out.println("Enter words, type (stop or exit) to stop:");
         System.out.println();

         Scanner keyboard = new Scanner(System.in);
         String word = keyboard.nextLine();
         int wordcount = 0;

         while(!(word.equals("exit")))
         {
             wordcount++;   
         }

         System.out.println("you enetered " + wordcount + "words.");
    }
}

1 个答案:

答案 0 :(得分:3)

如果您只被允许使用您提供的内容:

System.out.println("Enter words, type (stop or exit) to stop:");
System.out.println();

Scanner keyboard = new Scanner(System.in);
String word = keyboard.nextLine();
int wordcount = 0;

while(!(word.equalsIgnoreCase("exit") || !word.equalsIgnoreCase("stop"))) {
   word = keyboard.nextLine();
   wordcount++;   
}

System.out.println("you enetered " + wordcount + " word(s).");

问题是您陷入了无限循环,因为您从未检查过扫描程序中while更新输入的word条件。这样,每次用户输入一个新单词时它都会递增,然后检查用户是否输入了一个允许循环退出的单词。

equalsIgnoreCase()将获取您的String值,并忽略其值的区分大小写。这将减少您对4到2的检查。