从BufferedReader中键入找到arrayList中最大和最小的元素

时间:2019-02-09 16:00:40

标签: java arrays bufferedreader

我不知道为什么我没有选择最小的数字。最大数字是正确的,例如:try:129,2,3。

public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    int list[] = new int[3];
    int min = list[0];
    int max = list[0];
    int input;

    for (input = 0; input < list.length; input++) {
        String s = reader.readLine();
        list[input] = Integer.parseInt(s);

        if (list[input] < min) {
            min = list[input];
        } else if (list[input] > max) {
            max = list[input];
        }
    }

    System.out.println("Smallet nummber: " + min);
    System.out.println("Biggest nummber: " + max);
}

3 个答案:

答案 0 :(得分:1)

像这样初始化您的最小值和最大值:

int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;

也将条件部分更改为此:

if (list[input] < min) {
    min = list[input];
}
if (list[input] > max) {
    max = list[input];
}

使用 list [0] 进行初始化时,min和max都将初始化为0。现在,如果输入值小于0,则仅 min 值将被更新。否则,最小值将永远不会更新。

答案 1 :(得分:1)

初始化这样的数组时:

int[] list = new int[3];

其所有项目均为0
因此,当您初始化最小值和最大值时:

int min = list[0];
int max = list[0];

您同时分配了两个0
如果您只想保持1个循环以获取输入并获取minmax,则可以执行以下操作:

if (input == 0) {
    min = list[input];          
    max = list[input];
} else if (list[input] < min) {
    min = list[input];
} else if (list[input] > max) {
    max = list[input];
}

答案 2 :(得分:0)

min为0,且始终小于list [imput]。情况:

if (list[input] < min) {

从不发生。 在您的arrayList中使用一个负数;)