当前位置: 首页 > 知识库问答 >
问题:

如何检测nextInt或的内容,如果它在末尾?

姜泳
2023-03-14

以下问题来自Daniel Liang的《Java简介》一书的第5章:

(计算正数和负数并计算数字的平均值)编写一个程序,该程序读取未指定数量的整数,确定已读取的正值和负值数,并计算输入值的总和平均值(不计算零)。程序以输入 0 结束。将平均值显示为浮点数。下面是一个示例运行: 输入一个整数,如果为 0,则输入结束:1 2 -1 3 0 正数为



3
负数为 1
总计为 5.0
平均值为 1.25 输入

一个整数,如果为 0,则输入结束:0
除 0
外不输入任何数字

我的代码目前满足问题的要求,但我想涵盖我的所有基础。有了非常基本的 Java 知识,有没有办法在我的 while 语句中检查 nextInt 以查看是否:

>

  • 数字序列不以0结尾。在我的测试中,程序似乎停止了(请注意我的同时语句中的调试输出)。我猜没有简单的方法来做到这一点,因此我们将使用0作为哨兵,但我想我会问。

    如果只按了回车键。当我在NetBeans中这样做时,提示会移动到下一行,我希望包含一条消息,通知用户没有输入任何内容,并输入一个整数。

    我的代码:

        /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package positivenegative;
    
    /**
     *
     * @author
     */
    import java.util.Scanner;
    
    public class PositiveNegative {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            Scanner input = new Scanner(System.in);
    
            // Welcome message
            System.out.println("Welcome to the Number Averagererer.");
                // Yes I'm aware "Averagererer" isn't a word
            System.out.println("Be sure to enter a 0 at the end");
            System.out.println("or the program will not work.");
            System.out.print("Enter an integer, the input ends if it is 0: ");
    
            // Initialize variables
            int number, totalPositive=0, totalNegative=0, counter=0;  
            double average=0;
    
            // Process the entered variables and sort/calculate them        
            while ((number = input.nextInt()) != 0){ // Continues if number isn't 0
                System.out.println(number); //debugging to see what the nextInt is doing
                // Adds to positive  
                if (number > 0){
                    totalPositive++;
                    counter++;
                    average = (average + number);         
                    }
                // Adds to negative
                else{
                    System.out.println(number);
                    totalNegative++;
                    counter++;        
                    average = (average + number);
                    }
            }
    
        // Output message if the user only enters "0"
        if (counter == 0){
            System.out.println("No numbers were entered except 0");
            }                    
    
        // Output message with calculated data from input
        else{
            double total = average;
            average = (average / counter);
            System.out.println("The number of positives is: " + totalPositive);
            System.out.println("The number of negatives is: " + totalNegative);
            System.out.println("The total is: " + total);
            System.out.println("The average is: " + average);
            }
        }
    }
    
  • 共有1个答案

    狄凯
    2023-03-14

    类似这样的事情应该会起作用:

    package positivenegative;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    
    public class PositiveNegative
    {
        public static void main(final String[] args)
        {
            // Welcome message
            System.out.println("Welcome to the Number Averagererer.");
            // Yes I'm aware "Averagererer" isn't a word
            System.out.println("Be sure to enter a 0 at the end");
            System.out.println("or the program will not work.");
            System.out.print("Enter an integer, the input ends if it is 0: ");
    
            // Initialize variables
            int number = -1;
            int totalPositive = 0;
            int totalNegative = 0;
            int counter = 0;
            double average = 0;
            String line = "";
            while (line.isEmpty())
            {
                line = readLine();
                if (line.isEmpty())
                {
                    System.out.println("Line is empty. Enter number!");
                }
            }
    
            try (final Scanner input = new Scanner(line))
            {
                // Process the entered line and sort/calculate them
                while (input.hasNextInt())
                {
                    number = input.nextInt();
                    if (number == 0)
                    {
                        // stop if number is 0
                        break;
                    }
                    System.out.println("number: " + number);// TODO: remove
                    // Adds to positive
                    if (number > 0)
                    {
                        totalPositive++;
                    }
                    // Adds to negative
                    else
                    {
                        totalNegative++;
                    }
                    counter++;
                    average = (average + number);
                }
    
                // Output message if the user only enters "0"
                if (counter == 0)
                {
                    System.out.println("No numbers were entered except 0");
                }
    
                // Output message with calculated data from input
                else
                {
                    final double total = average;
                    average = (average / counter);
                    System.out.println("The number of positives is: " + totalPositive);
                    System.out.println("The number of negatives is: " + totalNegative);
                    System.out.println("The total is: " + total);
                    System.out.println("The average is: " + average);
                }
            }
        }
    
        private static String readLine()
        {
            try
            {
                final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                final String s = br.readLine();
                return s;
            } catch (final IOException e)
            {
                e.printStackTrace();
                return "";
            }
        }
    }
    

    对于您的扫描仪,您可以使用< code>input.hasNextInt()来测试是否有更多的数字,但是它会一直阻塞,直到有更多的数字。更多关于封锁的细节可以在这里找到。

     类似资料:
    • 问题内容: 说我有一个包含以下内容的模块: 我想为下半部分编写一个单元测试(我想实现100%的覆盖率)。我发现执行导入/设置机制的内置的 runpy 模块,但无法弄清楚如何模拟或检查 main() 函数是否被调用。 到目前为止,这是我尝试过的: 问题答案: 我将选择另一种替代方法,将其从覆盖率报告中排除,当然,只有在测试中已经具有main()函数的测试用例的情况下,您才能这样做。 至于为什么我选择

    • 我正在为我的网站创建一个打印页面:http://vivule.ee/0/print 我希望在页面加载后启动。我尝试过不同的方法,但都不成功。我知道这是可能的,因为我可以监听完成的Ajax调用,但在Angular中是如何实现的?

    • 我正在尝试构建一个php国际象棋应用程序,并将其包装在容器中。起初,我使用了旧的docker配置,但它不起作用,所以我在上面添加了一些内容(比如将config apache文件复制到容器中等等)。重点是-I copy放入只包含一行代码的容器中。但是在运行容器之后,它显示第5行有错误。当我在运行之前查看文件的内容时,它显示它只包含1行,所以我感到困惑。在回购(下面的链接)中,我有这个文件。 这是我运

    • 问题内容: 我想检测何时文本框的内容已更改。我可以使用keyup方法,但是它也可以检测不会产生字母的击键,例如箭头键。我想到了使用keyup事件执行此操作的两种方法: 仔细检查所按键的ASCII码是否为字母\退格\删除 使用闭包来记住按键之前文本框中的文本,并检查是否已更改。 两者看起来都很麻烦。 问题答案: 开始观察“输入”事件而不是“改变”事件。 …很干净,但可以扩展到:

    • 本文向大家介绍如果做一个杯子的检测,你如何测试相关面试题,主要包含被问及如果做一个杯子的检测,你如何测试时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 功能 (1)水倒水杯容量的一半 (2)水倒规定的安全线 (4)水杯容量刻度与其他水杯一致 (5)盖子拧紧水倒不出来 (6)烫手验证 性能 (1)使用最大次数或时间 (2)掉地上不易损坏 (3)盖子拧到什么程度水倒不出来 (4)保温时间长 (

    • 问题内容: 是否有一个TSQL脚本可以让我看到约束的内容。我发现了一个有关Oracle的问题,但我需要一个TSQL脚本。 如何在Oracle上查看检查约束的内容 我知道sys.check_constraints,但是对于所有对象,“定义”都返回null。 问题答案: 其他方式 用于检查约束 对于默认约束 还有另一种方式