嗨,我正在研究一个java代码,以找到最接近的3个数字 .
输入格式:输入由4个整数组成 . 前三个整数值对应于P1,P2,P3,分别位于Khaldiya的3个营地C1,C2,C3的难民人数 . 最后一项输入对应于一个地方的平民人数 .
输出格式:打印单个阵营名称C1,C2或C3,其中可以容纳来自当地的给定数量的平民 . 有关格式规范,请参阅示例输入和输出 .
Sample Input 1:
650
890
345
400
Sample Output 1:
C1
我写了一个没有通过所有测试用例的代码 . 任何人都可以在我错的地方帮助我吗?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
int p1,p2,p3,n;
int diff = 0;
p1=s.nextInt();
p2=s.nextInt();
p3=s.nextInt();
n=s.nextInt();
if((n<p1)||(n>p2)&&(n>p3))
System.out.println("C1");
else if((n<p2)||(n>p1)&&(n>p3))
System.out.println("C2");
else if((n<p3)||(n>p2)&&(n>p1))
System.out.println("C3");
}
}
1 回答
您的解决方案的问题是它只比较数字的值 . 如果p1,p2和p3都大于n,但p3最接近怎么办?当你输出C3时,你的代码仍会输出C1 .
我想你应该比较每个p值和n之间的差异 .
然后将负差异设置为
Integer.MAX_VALUE
.然后你可以找到以上三个变量中最小的一个: