让用户输入整数直到" X"是按Java

时间:2014-04-11 01:35:59

标签: java

基本上我要做的是在(CUI)中读取用户输入,直到用户按下x。然后显示用户输入的数字的最小值,最大值和平均值。当我按x时,我不断收到InputMismatchException。我尝试了很多不同的方法,这就是为什么我可能会有一些不必要的代码。

 import java.io.*;
import java.util.Scanner;
import java.lang.Number;
public class taskTwo{
public static void main(String [] args) throws IOException {
    int min = 0;
    int max = 0;
    boolean isX =false;
    Scanner input = new Scanner (System.in);
    BufferedReader input2 = new BufferedReader (new InputStreamReader (System.in));
    String s = "x";
    s = input2.readLine();


    while(isX == false){
     if(s.equals ("x") || s.equals ("X")){
        isX = true;
    }

    int val = input.nextInt();

      if (val == 0) {
          break;
      }
      if (val < min) {
          min = val;
      }
      if (val > max) {
         max = val;
      }

      }

     if(isX == true){
      System.out.println("Min: " + min);
    System.out.println("Max: " + max);
      }




}

}

3 个答案:

答案 0 :(得分:1)

在你使用nextInt()的while循环中,显然它会期望一个整数作为输入。因此,当您输入的输入x是一个字符串时,它将失败。

所以在循环中将字符串作为输入,如果它不是X并且是一个数字,则将其转换为int值并计算

答案 1 :(得分:0)

s = input2.readLine();被称为外部,而循环仅指第一行,它将检查X,如果第一行不是X或你输入0,则循环永远不会结束。

答案 2 :(得分:0)

1。)您不需要两个读取输入的对象。只需input即可。

2。)你可以使用

input.hasNextInt();

input.hasNext();

检查输入是int还是字符串。类似的东西:

while(true){
    if(input.hasNextInt()){
        //do something with the integer
    }else if(input.hasNext()){
        if(input.next().toLowerCase() == "x"){
            break;
        }
    }
}