java 让用户输入整数

eimct9ow  于 2023-11-15  发布在  Java
关注(0)|答案(2)|浏览(160)

我想做一个程序,它不断提示用户输入整数(从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");

字符串
有什么建议能告诉我下一步该怎么做吗?

3phpmpom

3phpmpom1#

你将需要做这样的事情:

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行,但如果它们只是一行,那么你可以继续下去,而不使用{}
但问题是,我想你使用的是&&而不是||。如果两个语句都为真,&&(AND)运算符就执行,但如果任何一个条件为真,||(OR)运算符就工作。
如果你说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,而(!in.hasNext(“X”)||!in.hasNext(“x”))这是有意义的。明白了吗? 最后,关于如何计算平均值.,你需要做的是将所有输入变量存储到一个数组中,然后取出其平均值,或者你可以考虑自己编写一些代码。比如取出平均值,你可以创建一个变量sum,然后不断地添加用户输入的整数,还可以保留一个变量count`,它将保存输入的整数的数量最后你可以把它们分开来得到答案

**更新:**对于检查最小值和最大值,您可以做的是创建两个新变量,如int min=0, max=0;,当用户输入新变量时,您可以检查

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


if(max<userinput){
    max=userinput;
}

goqiplq2

goqiplq22#

这将符合您的需求:

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

字符串

相关问题