让用户输入整数

时间:2014-04-14 06:55:26

标签: java java.util.scanner user-input

我想创建一个程序,它不断提示用户输入整数(来自CUI),直到它收到一个' X'或者' x'来自用户。 然后程序打印出输入数字的最大数量,最小数量和平均值。

我确实设法让用户输入数字,直到有人输入' X'但如果有人输入' x'我似乎无法阻止用户输入数字。和第二位。

这是我设法解决的代码:

Scanner in = new Scanner(System.in);
System.out.println("Enter a number")
while(!in.hasNext("X") && !in.hasNext("x"))
s = in.next().charAt(0);
System.out.println("This is the end of the numbers");

有关我如何进一步行动的任何提示?

2 个答案:

答案 0 :(得分:0)

你需要做这样的事情:

Scanner in = new Scanner(System.in);
System.out.println("Enter a number")
while(!(in.hasNext("X") || in.hasNext("x")))
    s = in.next().charAt(0);
System.out.println("This is the end of the numbers");

每当你使用while循环时,你必须使用{},以防while块中的参数超过1行,但如果它们只是一行,那么你可以继续使用{{1} }。

但问题是,我认为使用{}代替&&||(AND)运算符执行的操作是,如果两个语句都为真,则&&(OR)运算符在任何条件为真时都有效。

如果你说|| while(!in.hasNext(" X")||!in.hasNext(" x"))`这是有意义的。理解?

关于while(!in.hasNext("X") && !in.hasNext("x")) it makes no sense as the user input is not both at the same time, but instead if you use没问题,你不必说对不起,但在提问之前要记住一些事情。你必须阅读这个https://stackoverflow.com/help/how-to-ask,还有一件事,你应该在设置问题时使用正确的英语语法。

最后,关于如何计算平均值...,为此您需要做的是将所有输入变量存储到数组中然后取出它的平均值,或者您可以考虑它和代码自己做点什么喜欢取出mean,你可以创建一个变量sorry, im really new at this. but ive added the code,然后继续添加用户输入的整数,并保留一个变量sum,它将保留输入的整数数,然后最后你可以将它们分开来得到你的答案

更新:要检查最小值和最大值,您可以执行的操作是创建2个新变量,例如count,当用户输入新变量时,您可以检查

int min=0, max=0;

//Note you have to change the "userinput" to the actual user input
if(min>userinput){
    min=userinput;
}

注意:在stackoverflow,我们可以帮助您解决您遇到的问题,但是您无法利用它。你不能在这里发布你的作业。但是如果你正在尝试编写某些内容并且仍然坚持并且无法在google / stackoverflow找到答案,那么你可以提出一个新问题,并且你需要告诉你已经尝试了什么。欢迎来到SO! :D希望你在这里过得愉快

答案 1 :(得分:0)

这符合您的需求:

public void readNumbers() {
    // The list of numbers that we read
    List<Integer> numbers = new ArrayList<>();

    // The scanner for the systems standard input stream
    Scanner scanner = new Scanner(System.in);

    // As long as there a tokens...
    while (scanner.hasNext()) {
        if (scanner.hasNextInt()) {  // ...check if the next token is an integer
            // Get the token converted to an integer and store it in the list
            numbers.add(scanner.nextInt());
        } else if (scanner.hasNext("X") || scanner.hasNext("x")) {  // ...check if 'X' or 'x' has been entered
            break;  // Leave the loop
        }
    }

    // Close the scanner to avoid resource leaks
    scanner.close();

    // If the list has no elements we can return
    if (numbers.isEmpty()) {
        System.out.println("No numbers were entered.");
        return;
    }

    // The following is only executed if the list is not empty/
    // Sort the list ascending
    Collections.sort(numbers);

    // Calculate the average
    double average = 0;

    for (int num : numbers) {
        average += num;
    }

    average /= numbers.size();

    // Print the first number
    System.out.println("Minimum number: " + numbers.get(0));
    // Print the last number
    System.out.println("Maximum number: " + numbers.get(numbers.size() - 1));
    // Print the average
    System.out.println("Average:        " + average);
}