每次我的输出打印出通过扫描仪给出的最后一个数字作为最大数字。该程序需要以某种方式进行修改,它扫描我输入的数字并打印出最大的数字。
P.S这不是学校的工作,它只是在业余时间编码。
import java.util.Scanner;
public class FindTheLargestNumber {
public static void main(String[] args) {
int counter = 1;
int number;
int largest = 0;
Scanner input = new Scanner(System.in);
System.out.println("Enter the number: ");
number = input.nextInt();
while(counter < 10)
{
System.out.println("Enter the number: ");
number = input.nextInt();
counter++;
}
if(number > 1)
largest = number;
System.out.println("the largest number is " + largest);
}
}
CONSOLE:
Enter the number:
123
Enter the number:
443
Enter the number:
221
Enter the number:
453
Enter the number:
553
Enter the number:
665
Enter the number:
776
Enter the number:
23
Enter the number:
12
Enter the number:
23
output:
the largest number is 23
它应该清楚地打印776,但它打印我输入的最后一个数字。
答案 0 :(得分:4)
您正在检查最后接受的号码,如果它大于1,您将其分配给最大号码。但是你必须确保检查所有数字并将它们进行比较以获得最大的数字。
此代码适用于您
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int counter = 1;
int number;
int largest = 0;
Scanner input = new Scanner(System.in);
System.out.println("Enter the number: ");
number = input.nextInt();
while(counter < 10)
{
System.out.println("Enter the number: ");
number = input.nextInt();
if(largest < number) {
largest = number;
}
counter++;
}
System.out.println("the largest number is " + largest);
}
}
答案 1 :(得分:2)
这里你正在检查循环外的条件,它只检查最后一个输入。当你在循环之前接受第一个值时,你应该在循环之前将该值设置为最大值。 (khelwood
指出)
所以它应该是这样的,
System.out.println("Enter the number: ");
number = input.nextInt();
largest=number;
while(counter < 10){
System.out.println("Enter the number: ");
number = input.nextInt();
if(number > largest)//If largest is small, set current number as largest
largest = number;
counter++;
}
答案 2 :(得分:1)
你应该在while循环中移动它:
if(number > largest)
largest = number;