【问题标题】:printing the largest number from a while loop, when 10 numbers are inputted from the keyboard当从键盘输入 10 个数字时,从 while 循环中打印最大数字
【发布时间】:2014-10-13 13:23:33
【问题描述】:

每次我的输出打印出通过扫描仪给出的最后一个数字作为最大数字。该程序需要进行某种修改,它会扫描我输入的数字并打印出最大的数字。

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

控制台:

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,但它会将我输入的最后一个数字打印为最大的。

【问题讨论】:

  • 您对largest 的测试不在循环范围内。
  • if(number &gt; 1) 应该是if(number &gt; largest)
  • 非常感谢朋友,帮了大忙。

标签: java while-loop


【解决方案1】:

您正在检查最后一个接受的数字,如果它大于 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);
    }
}

【讨论】:

    【解决方案2】:

    您在这里检查循环外的条件,它只检查最后一个输入。当您在循环之前接受 first 值时,您应该在循环之前将该值设置为最大。 (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++;
    }
    

    【讨论】:

    • 感谢您的努力。
    【解决方案3】:

    你应该在 while 循环中移动它:

    if(number > largest)
        largest = number;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2012-03-18
      • 2020-10-19
      相关资源
      最近更新 更多