查找最大的数字 - 初学者Java

时间:2014-11-05 18:26:10

标签: java if-statement while-loop

任务是读取一组正值&在用户输入负值后报告其最大值。扩展到最低限度。 我认为这个问题是变量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...


}

4 个答案:

答案 0 :(得分:3)

代码中的问题:

  1. 您没有在input任何地方分配max值。

  2. input = a; // each time you are assigning a to input so input becomes 0 since a is 0.

  3. if ( a >= input) { // this condition will be always true a = max; }

  4. 概念很简单:

    步骤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!