我需要获得最多三个整数,但是当第二个数字小于零时,我的代码不会给出输出。
package main;
import java.util.Scanner;
public class Max {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int c=in.nextInt();
int max;
if(a>b){
if(a>c)max =a;
else max =c;
}
else{
if(b>c)max=b;
else max=c;
System.out.println(max);
}
}
}
它通过了其他情况的测试。你能告诉我为什么会这样吗?
答案 0 :(得分:2)
因为你有println声明的地方。它在第二个条件中,你希望它在if语句之外。
<div class="webstarvideo">
<video style="width:100%;height:100%" preload="none" class="">
<source src="I NEED THIS" type="video/mp4"></video>
<div class="webstarvideodoul">
<canvas></canvas>
</div>
</div>
答案 1 :(得分:2)
您的print语句位于else块内,因此只有在进入else分支时才会执行。将它移到else块之外。
public class Max {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int c=in.nextInt();
int max;
if(a>b){
if(a>c)max =a;
else max =c;
}
else{
if(b>c)max=b;
else max=c;
}
}
System.out.println(max);
}
答案 2 :(得分:0)
在存储int值的Collections.max()
上使用List
。
package main;
import java.util.Scanner;
public class Max {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
Scanner in = new Scanner(System.in);
int a= in.nextInt();
list.add(a);
int b= in.nextInt();
list.add(b);
int c= in.nextInt();
list.add(c);
System.out.println("Largest: " + Collections.max(list));
}
}
答案 3 :(得分:0)
我建议写单独的方法
public int max(int a, int b) {
return Math.max(a, b);
}
并将其称为
max(a, max(b, c));
这样的代码更清洁
答案 4 :(得分:-1)
将数字输入数组而不是三个单独的变量。然后你可以使用这个方法:
public int getLargest(int[] nums){
int largest = Integer.MIN_VALUE;
if(nums.length == 0)
return -1;
for(int i : nums){
if(i > largest)
largest = i;
}
return largest;
}