如何使用扫描仪循环用户输入并使用负整数获取最大值

时间:2017-10-26 05:55:03

标签: java for-loop negative-number

我不知道如何制作它以便我的代码可以使用来自用户输入的负整数,任何建议都可以帮助谢谢!

import java.util.Scanner;

public class MyScannerProject {

    public static void main(String[] args) {
        int max = 0;
        Scanner sc = new Scanner(System.in);
        for (int j = 0; j < 10; j++) {
            System.out.println("Please enter a number ");
            int a = sc.nextInt();
            if (max < a) {
                max = a;
            }
            System.out.println("Your max is " + max);
        }
    }

}

2 个答案:

答案 0 :(得分:2)

Integer类中有一个特殊的常量值,特别是为此目的。它存储了Integer实例可以存储的最小值,这样无论何时将任何可能的int值与它进行比较,它都将大于或等于它,永远不会更小。

public static final int   MIN_VALUE = 0x80000000;

在你的程序中,如果我们只用这个值而不是0来初始化 max ,它将开始给出最大值为true

当然,正如@ScaryWombat所说,在if条件之后摆脱分号。

    int max = Integer.MIN_VALUE;
    Scanner sc = new Scanner(System.in);
    for (int j = 0; j < 10; j++) {
        System.out.println("Please enter a number ");
        int a = sc.nextInt();
        if (max < a) {
            max = a;
        }
    }
    System.out.println("Your max is " +  max );

答案 1 :(得分:0)

您可以使用尽可能少的数字进行初始化,或者只是将第一个数字作为最小值,然后将其与您作为输入的后续数字进行比较。

        int max = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter a number ");
        max = sc.nextInt();
        for (int j = 0; j < 9; j++) { // 1 less than you would normally do 
            System.out.println("Please enter a number ");
            int a = sc.nextInt();
            if (max < a) {
                max = a;
                }
            }
            System.out.println("Your max is " +  max );

如果你看一下这段代码......我们可以这样做:-(只是一种不同的,更简单的方式来实现我之前展示过的想法)

        int max = 0;
        Scanner sc = new Scanner(System.in);
        for (int j = 0; j < 10; j++) { 
            System.out.println("Please enter a number ");
            int a = sc.nextInt();
            if(i == 0) max=a;
            if (max < a) {
                max = a;
           }
        }
        System.out.println("Your max is " +  max );

与许多评论和回答一样,您可以使用Integer.MIN_VALUE初始化max。此解决方案只是实现相同目标的另一种方式。