如何在有条件的循环中检查输入的String?

时间:2012-11-01 18:11:47

标签: java string if-statement input while-loop

我想编写一个程序,它检查用户输入的字符串是否存在给定的char限制(例如10个字符)。如果输入的字符串超过10个字符,则系统应该一次又一次地重新提示用户输入有效字符串(10个字符的单词),直到用户输入有效的字符串。

我已经有了一些代码,但它还没有用,因为我不知道如何将进程向上移动(到第1行)以重新提示用户或者还有其他简单方法?

System.out.print("Input: ");
String inputChars = Input.readString();

while (inputChars.length() > 10){
    System.out.print("Input: ");
    String inputChars = Input.readString();  // here is mistake now
}
System.out.print("Output: ");
System.out.print("The enter has 10 chars");

我只想检查输入的单词,如果超过10个字符,则只需跳过它并再次提示用户输入一个不超过10个字符的单词。我还不擅长java,所以如果这个问题很愚蠢,那就解释一下如何解决它。提前致谢

3 个答案:

答案 0 :(得分:3)

看看你的循环:

while (inputChars.length() > 10){
    System.out.print("Input: ");
    String inputChars = Input.readString();
}

循环体的第二行重新声明 inputChars变量。你不能这样做,因为它已经在范围内了。您只想替换以前的值

inputChars = Input.readString();

您还应考虑重构代码以避免重复:

String inputChars;
do {
    System.out.print("Input: ");
    inputChars = input.readString();
} while (inputChars.length() > 10);

请注意我是如何将Input变量重命名为input以遵循常规Java命名约定的。我实际上可能会更改inputinputChars更具描述性 - 特别是,目前没有任何输入数据意味着意味着的指示。 / p>

答案 1 :(得分:1)

只需删除开头的String

  while (inputChars.length() > 10){
     System.out.print("Input: ");
     inputChars = Input.readString();  // here is mistake now
  }

通过开始String,您尝试再次重新定义相同的名称变量。

答案 2 :(得分:0)

更改为:

String inputChars = ""
do {
    System.out.print("Input: ");
    inputChars = Input.readString();
} while (inputChars.length() > 10)
System.out.print("Output: ");
System.out.print("The enter has 10 chars");

之前,inputChars已在循环之前声明,因此您无需重新声明变量。

do-while循环是一个更好的构造,因为它使你的意图更清晰,使你的代码更干净。