我有一个家庭作业问题,我需要将用户输入的名称和标记分成两个数组。然后我向用户询问标记,并告诉他们哪个名称获得了标记。如果没有人得到标记,则说“找不到标记”。
我在最后一部分遇到问题,它通过for循环,如果列表中的名字得到了标记,它会打印出“无法找到Mark”这个数组中所有其他位置的名字与商标不符。我该如何解决这个问题?
以下是代码:
double [] mark = new double[4];
String [] name = new String[4];
for (int count=0; count<name.length; count++) {
System.out.println("Enter name #" + (count+1) + ":");
name[count] = sc.nextLine();
sc.nextLine();
System.out.println("Enter mark #" + (count+1) + ":");
mark[count] = sc.nextDouble();
sc.nextLine();
}
System.out.println("Enter a mark: ");
double secondmark = sc.nextDouble();
for (int count=0; count<name.length; count++) {
if (secondmark==mark[count]) {
System.out.println((name[count])+ " got the mark.");
}
else {
System.out.println("Mark can't be found");
}
}
答案 0 :(得分:2)
你需要把&#34; Mark找不到&#34; 在循环之外,我们可以使用一个布尔变量来帮助我们确定它何时和#39;适合显示信息。
boolean flag = false;
for (int count = 0; count < name.length; count++) {
if (secondmark == mark[count]) {
System.out.println((name[count])+ " got the mark.");
flag = true;
break;
}
}
if(!flag) System.out.println("Mark can't be found");
答案 1 :(得分:2)
如果找到标记,请设置标记。只有在for循环遍历每个名称后打印才能找到它。
boolean markFound = false;
for (int count=0; count<name.length; count++)
{
if (secondmark==mark[count]
{
markFound = true;
System.out.println((name[count])+ " got the mark.");
}
}
if (markFound == false)
{
System.out.println("Mark can't be found");
}
答案 2 :(得分:2)
原因是以下代码部分:
for (int count=0; count<name.length; count++) {
if (secondmark==mark[count]) {
System.out.println((name[count])+ " got the mark.");
}
else {
System.out.println("Mark can't be found");
}
}
如果您看到,对于每个值,它会检查它是否有标记。如果没有,它会打印出无法找到的标记,这就是您看到所有这些值的原因。您需要做的是添加一个布尔值来存储它是否被找到,然后报告它是否在循环后找不到。例如:
boolean foundMark = false;
for (int count=0; count<name.length; count++) {
if (secondmark==mark[count]) {
System.out.println((name[count])+ " got the mark.");
foundMark = true;
}
}
if(foundMark == false){
System.out.println("Mark can't be found");
}