import java.util.Scanner;
class Compare
{
int max = 0;
int min = 0;
public void max(int num)
{
if(num > max)
{
max = num;
}
}
public void min(int num)
{
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 :(得分:3)
将0作为最小值的原因是因为当您调用compare.min(num);
时,您的值将与预定义的本地值min
进行比较,该值等于0。
当您将任何正数与0进行比较时,您将得到0作为最小值。
可行的解决方案是
class Compare
{
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
public void max(int num)
{
if(num > max)
{
max = num;
}
}
public void min(int num)
{
if(num < min)
{
min = num;
}
}
}
这将保证您首先比较的内容将保存为 min 值,因此可用作整个程序执行的新最小值。
答案 1 :(得分:0)
这会给你一个想法
我修改了你的Compare类。我使用包装类作为实例变量数据类型。
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;
}
}
现在您将获得所需的输出。
答案 2 :(得分:0)
您可以使用标记来简化此操作,以跟踪第一个输入,然后将其余部分与之相比较。
class Demo{
public static void main(String[]args){
Compare c = new Compare();
try(java.util.Scanner sc = new java.util.Scanner(System.in)){
int i = 1;
final int m = 5;
while(m>=i){
System.out.printf("Numer %d of %d: ", i, m);
if(sc.hasNextInt()){
c.process(sc.nextInt());
i ++;
continue;
}
System.out.println("Kindly input numbers only!");
sc.nextLine();/* clear input */
}
}
System.out.printf("Max: %d, Min: %d%n", c.getMax(), c.getMin());
}
}
class Compare{
private int min;
private int max;
private boolean first = true;
public int getMin(){
return min;
}
public int getMax(){
return max;
}
public void process(int val){
if(first){
this.min = this.max = val;
first = false;
return;
}
if(this.min > val){
this.min = val;
}
if(this.max < val){
this.max = val;
}
}
}