比较java中2数组的每个值,对于每个相同的值+4和-1(如果不是)
我们有2个数组,有一些元素。比较同一索引下的两个数组元素,如果相等,则为+4,如果不相等,则为-1 例如:比较java中2数组的每个值,对于每个相同的值+4和-1(如果不是),java,Java,我们有2个数组,有一些元素。比较同一索引下的两个数组元素,如果相等,则为+4,如果不相等,则为-1 例如: array1=[a b a b], array2=[a a b b] explanation: array1[0]==array2[0] //+4 array1[1]!=array2[1] //-1 aarray1[2]==array2[2] //+4 aarray1[3]!=array2[3] //-1
array1=[a b a b], array2=[a a b b]
explanation:
array1[0]==array2[0] //+4
array1[1]!=array2[1] //-1
aarray1[2]==array2[2] //+4
aarray1[3]!=array2[3] //-1
OUTPUT//6**
我的代码:
import java.util.Scanner;
class Solution
{
public static int scoreExam(String[] correct, String[] student)
{
int count=0;
for (int i=0;i<correct.length ;i++ )
{
for (int j=0;j<student.length ;j++ )
{
if(i==j)
{
if(correct[i]==student[j])
{
count=count+4;
}
else if(correct[i]!=student[j])
{
count=count-1;
}
}
}
}
return (count);
}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String[] array1String,array2String;
String[] array2;
int n=Integer.parseInt(sc.nextLine());
array1String=sc.nextLine().split("//s+");
array2String=sc.nextLine().split("//s+");
array2=new String[array2String.length];
for (int i=0;i<array2String.length ;i++ )
{
if (array2String[i].equals("blank"))
{
array2[i]="";
}
else
{
array2[i]=array2String[i];
}
}
System.out.println(scoreExam(array1String, array2));
}
}
尽管这是一个关于比较字符串的重复问题,但我认为流也适合这种情况;您可以使用IntStream,如果答案匹配,则将每个元素映射为4,否则映射为-1,然后简单地返回总和:
IntStream.range(0, correct.length)
.map(i -> correct[i].equals(student[i]) ? 4 : -1)
.sum();
请单击并在您对任务和代码的解释中添加问题。您好!请注意,不需要使用else if。就用别的吧。如果第一个If的条件相等?为false,它们不相等。欢迎使用堆栈溢出!请环顾四周,仔细阅读,尤其是您没有说您所展示的代码有什么问题,例如,哪些代码没有按您预期的方式工作。我们猜测您没有得到正确的输出,但在提问时要清楚这一点很重要。也是有用的阅读。