package com.company;
import java.util.Scanner;
class Compare
{
Integer max;
Integer min;
public void max(int num)
{
if (max == null)
max = num;
else if(num > max)
max = num;
}
public void min(int num)
{
if (min == null)
min = num;
else if(num < min)
min = num;
}
}
class Main
{
public static void main(String args[])
{
Compare compare = new Compare();
Scanner input = new Scanner(System.in);
int sets = input.nextInt();
for (int i = 0; i < sets ; i++)
{
for (int j = 0; j < 5; j++)
{
int num_main = input.nextInt();
compare.max(num_main);
compare.min(num_main);
}
System.out.println(compare.max);
System.out.println(compare.min);
}
}
}
我想计算来自用户的五个输入的最大值和最小值,我设法得到最大值和最小值但是如果我测试两个组我没有得到正确的最大值而不是我得到的前一个最大值作为我的最大值值。如何以最简单的方式获得最大值
答案 0 :(得分:0)
最小的变化是在第一个循环中移动compare
,因此每次新的“max
”时都会找到新的min
(和set
)输入数字。
for (int i = 0; i < sets ; i++)
{
Compare compare = new Compare();
//...
//as you were
}
在此循环之前创建compare
时,它将保持输入的每组数字的值。
您希望它能够找到输入的max
和min
每个数字。
答案 1 :(得分:0)
在转到下一个循环之前,您必须恢复compare
对象。修改代码中的一点:
for (int i = 0; i < sets ; i++)
{
for (int j = 0; j < 5; j++)
{
int num_main = input.nextInt();
compare.max(num_main);
compare.min(num_main);
}
System.out.println(compare.max);
System.out.println(compare.min);
compare = new Compare();
}
说明:
假设sets = 2
:
获得5个用户输入后,您将获得最大值和最小值。在转到第二个循环之前,必须先恢复compare
对象,然后再获得5个下一个用户输入,如上面的代码。你也可以这样做:
for (int i = 0; i < sets ; i++)
{
for (int j = 0; j < 5; j++)
{
int num_main = input.nextInt();
compare.max(num_main);
compare.min(num_main);
}
System.out.println(compare.max);
System.out.println(compare.min);
compare.max = compare.min = null;
}