Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环错误-修复循环意味着破坏其他东西,反之亦然_Java_Loops - Fatal编程技术网

Java 循环错误-修复循环意味着破坏其他东西,反之亦然

Java 循环错误-修复循环意味着破坏其他东西,反之亦然,java,loops,Java,Loops,我一直在努力完成这个循环任务。我可以让程序按预期工作,但是,如果用户没有输入任何值,那么它的代价是在最后有额外的文本。如果我编写代码,使未输入值的用户不具有此额外文本(即最大值为0,最大值的计数为0),则循环不起作用。我的代码包括在下面。发生了什么事 //Name: //Date: //File: //Description: Program that allows the user to enter numbers and determine the maximum value as well

我一直在努力完成这个循环任务。我可以让程序按预期工作,但是,如果用户没有输入任何值,那么它的代价是在最后有额外的文本。如果我编写代码,使未输入值的用户不具有此额外文本(即最大值为0,最大值的计数为0),则循环不起作用。我的代码包括在下面。发生了什么事

//Name:
//Date:
//File:
//Description: Program that allows the user to enter numbers and determine the maximum value as well as count how many times that maximum value is entered.

import java.util.Scanner;

public class lab4b_hmcka
{
    public static void main (String [] args)
    {
    //variables
    int num1, num2, max1 = 0, max2 = 0, count = 0, maxCount = 0;

    System.out.println("          Find the maximum number");
    System.out.println();

    System.out.print("Enter an integer <0 ends the input>: ");
    Scanner input = new Scanner(System.in);
    num1 = input.nextInt();

    if (num1 ==0)
    {
        System.out.println("No numbers are entered except 0");
    }

    while (num1 != 0)
    {
        if (maxCount == 0)
        {
            System.out.print("Enter an integer <0 ends the input>: ");
            num2 = input.nextInt();
            max1 = Math.max(num1, num2);
            maxCount = maxCount + 1;
            count = count + 1;
            System.out.print("Enter an integer <0 ends the input>: ");
            num1 = input.nextInt();
            continue;
        }
        else
        {
            max2 = Math.max(num1, max1);

            if (num1 == max1)
            {
                maxCount = maxCount + 1;
                count = count + 1;
            }
            else
            {
                count = count + 1;
            }
            System.out.print("Enter an integer <0 ends the input>: ");
            num1 = input.nextInt();
        }


    }

        if (count == 1)
            {
            System.out.println("The maximum number is " + max1);
            }
        else
            {
            System.out.println("The maximum numberis " + max2);
            }
        System.out.println("The count for the max number is " + maxCount);
    }

}
//名称:
//日期:
//文件:
//描述:允许用户输入数字、确定最大值以及计算输入最大值的次数的程序。
导入java.util.Scanner;
公共类lab4b_hmcka
{
公共静态void main(字符串[]args)
{
//变数
int num1,num2,max1=0,max2=0,count=0,maxCount=0;
System.out.println(“查找最大数量”);
System.out.println();
System.out.print(“输入整数:”);
扫描仪输入=新扫描仪(System.in);
num1=input.nextInt();
如果(num1==0)
{
System.out.println(“除0外,未输入任何数字”);
}
while(num1!=0)
{
如果(maxCount==0)
{
System.out.print(“输入整数:”);
num2=input.nextInt();
max1=数学最大值(num1,num2);
maxCount=maxCount+1;
计数=计数+1;
System.out.print(“输入整数:”);
num1=input.nextInt();
继续;
}
其他的
{
max2=数学最大值(num1,max1);
如果(num1==max1)
{
maxCount=maxCount+1;
计数=计数+1;
}
其他的
{
计数=计数+1;
}
System.out.print(“输入整数:”);
num1=input.nextInt();
}
}
如果(计数=1)
{
System.out.println(“最大数量为”+max1);
}
其他的
{
System.out.println(“最大数量”+max2);
}
System.out.println(“最大数的计数为”+maxCount);
}
}

我不完全确定您想要实现什么以及您试图实现什么(无论是什么),但我假设如果用户想要立即退出(=首先输入0),您只想终止程序。因此,只需添加一个回报:

if (num1 == 0) {
    System.out.println("No numbers are entered except 0");
    return; // Terminate now.
}

我不完全确定您想要实现什么以及您试图实现什么(无论是什么),但我假设如果用户想要立即退出(=首先输入0),您只想终止程序。因此,只需添加一个回报:

if (num1 == 0) {
    System.out.println("No numbers are entered except 0");
    return; // Terminate now.
}

在程序末尾的if/else语句中,只需检查count的值是否等于1。在这种情况下,用户最初输入零永远不会是真的,因为我们没有进入计数第一次递增的while循环。在不过度更改代码的情况下,只需执行以下操作:

if(count == 1)
{
    int maxVal = Math.max(max1, max2);
    System.out.println("The max number is " + maxVal
    System.out.println("The count for the max number is " + maxCount
}
之后,您可以简单地删除else,这将为您提供所需的输出


此外,还有许多其他优化可以用更少的代码实现相同的结果,但我将把它留给个人学习体验。祝你好运

在程序末尾的if/else语句中,您只是检查count的值是否等于1。在这种情况下,用户最初输入零永远不会是真的,因为我们没有进入计数第一次递增的while循环。在不过度更改代码的情况下,只需执行以下操作:

if(count == 1)
{
    int maxVal = Math.max(max1, max2);
    System.out.println("The max number is " + maxVal
    System.out.println("The count for the max number is " + maxCount
}
之后,您可以简单地删除else,这将为您提供所需的输出


此外,还有许多其他优化可以用更少的代码实现相同的结果,但我将把它留给个人学习体验。祝你好运

如果我让代码让用户(…)你做了什么改变来实现这一点?没有必要
继续指令。如果我让代码让用户(…)你做了什么改变来实现这一点?没有必要
继续说明。是。这就是我想做的。我想用上面的文本终止程序。Manu。这正是我想做的。返回;工作。谢谢,是的。这就是我想做的。我想用上面的文本终止程序。Manu。这正是我想做的。返回;工作。非常感谢。