如何比较第一个数组的第n个元素和第二个数组的第n个元素?
WIN
LOSE
如果第一个数组的所有元素都大于第二个数组的所有元素,则打印WIN
,否则打印LOSE
示例1:
6
10 20 50 100 500 400
30 20 60 70 90 490
LOSE
示例2:
5
10 20 30 40 50
40 50 60 70 80
WIN
说明:
在第一个输入数组中的大小为6 由于array2索引3小于array1索引3,所以它打印失败 但是在第二个输入中,array2中的所有元素都大于array1的元素,因此它输出win
import java.util.*;
public class CandidateCode {
public static void main(String args[] ) throws Exception {
Scanner sc=new Scanner(System.in);
int i,j;
int n=sc.nextInt();
int a[]=new int[n];
int b[]=new int[n];
for(i=0;i<n;i++)
a[i]=sc.nextInt();
for(j=0;j<n;j++)
b[j]=sc.nextInt();
for(i=0;i<a.length;i++){
for(j=0;j<b.length;j++){
if(b[j]>a[i]){
System.out.println("WIN");
}else
System.out.println("LOSE");
}
}
}
}
答案 0 :(得分:1)
首先,您实际上只需要一个循环。由于两个数组的大小相同,因此您可以比较它们而无需第二个循环:
for(int i=0; i<n; i++){
if(b[i] > a[i])
...
}
由于您的代码可能会为每个具有较高值的索引打印“ WIN”,因此可能会有不错的解决方法。您可以做的是,在代码的开头设置一个变量,并仅在满足特定要求时才对其进行更改。然后,您可以将打印内容作为最后一行插入上述变量:
String result = "WIN";
...
for(int i=0; i<n; i++){
if(b[i] < a[i])
result = "LOSE";
}
System.out.println(result);
答案 1 :(得分:1)
您需要采用其他方法,您的情况是:
如果第二个数组中的所有数字都大于第一个数组的每个索引中的数字,则打印WIN,否则打印LOSE
您现在正在做的是:要求所有更大的数字,反之,当您发现一个比第一个数组中的数字小的数字时,您就输了。所以:
创建一个标记变量,我们将其称为win
boolean win = true;
更改您的条件
发件人:
if(b[j] > a[i]) {
收件人:
if(b[j] < a[i]) {
在这种情况下,将标志更改为false
,这意味着第二个数组中至少有一个值比第一个数组中的值低。打破循环
win = false;
break;
然后只问win
中的值:
if (win) {
System.out.println("WIN");
} else {
System.out.println("LOSE");
}
您完成了!
您的代码应该最终像这样(我提高了可读性的间隔,您也应该这样做,并且还为循环添加了花括号以提高可读性)
import java.util.*;
public class CandidateCode {
public static void main(String args[] ) throws Exception {
Scanner sc = new Scanner(System.in);
int i, j;
int n = sc.nextInt();
int a[] = new int[n];
int b[] = new int[n];
boolean win = true;
for(i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
for(j = 0; j < n; j++) {
b[j]=sc.nextInt();
}
for(i = 0; i < a.length; i++) {
for(j = 0; j < b.length; j++) {
if(b[j] < a[i]) {
win = false;
break;
}
}
}
if (win) {
System.out.println("WIN");
} else {
System.out.println("LOSE");
}
}
}
示例输出:
3
1 2 3
4 5 6
WIN
3
1 4 5
2 1 6
LOSE