任务是读取一组正值&在用户输入负值后报告其最大值。扩展到最低限度。 我认为这个问题是变量max初始化为0.之后它只保留在while循环中,因此输出始终为0。 我不知道如何将最后一个最大值带出循环并打印出来。 任何帮助,将不胜感激!
import java.util.Scanner;
// constants
// variables
int input;
int max = 0;
int a = 0;
// program code
System.out.println( "Input the numeber: "); input = scan.nextInt();
if ( input < 0 ) {
System.out.println( "You did not enter any positive number " );
}
else {
while ( input >= 0 ) {
input = a;
if ( a >= input) {
a = max;
}
else {
input = max;
}
input = scan.nextInt();
}
}
System.out.println( max );
}
// todo...
}
答案 0 :(得分:3)
代码中的问题:
您没有在input
任何地方分配max
值。
input = a; // each time you are assigning a to input so input becomes 0 since a is 0.
if ( a >= input) { // this condition will be always true
a = max;
}
概念很简单:
步骤1.将max
初始化为0
第2步。重复while input >=0
第3步。检查if input > max
,然后设置max=input
setp 4. print max
。
下面给出的代码:
public static void main(String[] args) throws Exception
{
int input;
int max = 0;
Scanner scan = new Scanner(System.in);
System.out.println("Input the numeber: ");
input = scan.nextInt();
if (input < 0) {
System.out.println("You did not enter any positive number ");
}
else {
while (input >= 0) {
if (max < input) {
max = input;
}
input = scan.nextInt();
}
}
System.out.println(max);
}
答案 1 :(得分:0)
代码看起来有点不确定,可能会出现一些问题,但基本的逻辑/算法问题是max应该设置你看的第一个数字不为零。
这是列表技术中最大值的经典扫描。您希望保持max始终是您到目前为止遇到的最大值的不变量,因此您不能设置为任意值,因为它可能不在列表中或大于列表成员。
答案 2 :(得分:0)
您在维持最大值时遇到逻辑错误。 Rustam的答案就是您正在寻找的内容,但为了澄清,您只需要保持最大值和输入值,并且只有在有新的最大值时才更新最大值并在您采取时输入输入,根本不需要。
答案 3 :(得分:0)
你可以使用:
if (input < 0) {
//----
}else {
while (input >= 0) {
if (max < input) {
max = input;
}
input = scan.nextInt();
}
}
System.out.println(max);
在您的代码中,您没有将值设置为max!