Java如何不从for循环中打印字符串? (ARRAY)

时间:2017-05-04 18:34:59

标签: java arrays for-loop

我有一个家庭作业问题,我需要将用户输入的名称和标记分成两个数组。然后我向用户询问标记,并告诉他们哪个名称获得了标记。如果没有人得到标记,则说“找不到标记”。

我在最后一部分遇到问题,它通过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");
    }
  }

3 个答案:

答案 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");
 }