当前位置: 首页 > 知识库问答 >
问题:

如何只打印一次for循环的语句

鱼阳伯
2023-03-14

iv得到了一个检查两个数组中的值的循环。如果找到匹配的值,这些值将被打印到控制台。

我还包含了一个 print 语句,该语句旨在仅在未在任何地方找到匹配项时才打印。

public class MatchTest 
{
   public static void main(String []args)
{
          boolean matchFound=true;
          int [] x = {4,5,6,1,2};
          int [] y = {1,2,3};


          getMatchingNumbers(x,y, matchfound);

}
//method to check numbers in each array and prints the numbers that match ( if found)
   public static void getMatchingNumbers(int [] a, int []b, boolean c)
   {

          for(int i : a)
          {
          for (int j : b)
            {
             if (i==j) 
              System.out.println("matching numbers are " + i);
             else 
               c = false;
             }
          }
// how do i get this to print ONLY if no matches are found any where
          if (c == false)  
          System.out.println("no matches found");   
      }
}        

此时,如果传入的数组包含一些匹配的数字和一些不匹配的数字,我仍然会得到没有找到匹配的消息。相反,我希望只有在任何地方都不存在匹配时,才打印“找不到匹配”消息。

我认为这应该是一个简单的更正,但我看不出我哪里出错了。

建议不胜感激。

共有3个答案

刁英朗
2023-03-14
public class MatchTest {



  public static void main(String[] args) {
     boolean matchFound = false;
     int[] x = {
                4,
                5,
                6,
                1,
                2
                  };
    int[] y = {
                1,
                2,
                3
                  };


    getMatchingNumbers(x, y, matchFound);

 }
    //method to check numbers in each array and prints a the numbers that      match ( if found)
 public static void getMatchingNumbers(int[] a, int[] b, boolean c) {


   for (int i: a) {
      for (int j: b) {

         if (i == j) {
             System.out.println("matching numbers are " + i);
             c = true;
         }

      }
   }
   // how do i get this to print ONLY if no matches are found any where
   if (!c) System.out.println("no matches found");


   }
}`

我在代码中做了非常小的更改。你的代码是糟糕的编码风格。为什么将布尔值传递给函数?没有必要。在Java中,您将布尔c传递到方法中。实际上,它在方法内部创建局部变量布尔c并复制传递的值。

邵飞白
2023-03-14

您只需要在开始时将布尔matchFound设置为false。然后在方法getMatchingNumbers中,将c=true添加到if(i==j)块。删除不需要的else块。

public class MatchTest {
   public static void main(String []args){
          boolean matchFound=false;//set this to FALSE at beginning
          int [] x = {4,5,6,1,2};
          int [] y = {1,2,3};


          getMatchingNumbers(x,y, matchfound);

}
//method to check numbers in each array and prints a the numbers that match ( if found)
   public static void getMatchingNumbers(int [] a, int []b, boolean c){

          for(int i : a){
          for (int j : b){
//Modified the if block and removed the else block
          if (i==j){
              System.out.println("matching numbers are " + i);
              c=true;
          }

          }
   }

          if (c == false)  System.out.println("no matches found");


          }
}    
东方俊力
2023-03-14

您将c设置为false,只有在数字匹配时才设置为true

public static void getMatchingNumbers(int [] a, int []b, boolean c){
        c = false;
        for(int i : a){
            for (int j : b){
                if (i==j){
                    System.out.println("matching numbers are " + i);
                    c = true;
                }
            }
        }
        if (!c)  System.out.println("no matches found");
    }

所以你找到了所有的匹配。

在if语句中返回时:

if(i==j){
    System.out.println("matching numbers are " + i);
    return;
}

你只找到第一个匹配项。

 类似资料:
  • 我正试图找到一种方法来使我的程序打印Println语句一次,因此,如果找到一个朋友,它会说:找到以下朋友:-f1 -f2 -f3或“找不到朋友”语句只打印一次。 现在它每次迭代循环时都会打印Println。。。 请帮忙好吗?

  • 我有一些嵌套代码,我想检查它的条件并打印一次语句。但是我不知道如何改革for循环,也不知道哪个是这个situstin使用的理想循环。?我已经写了这个,我得到你好打印4次…我想它打印一次…请帮忙。

  • 到目前为止,我的计划是: 现在我需要它做的是生成一个从华氏度到摄氏度的20个温度转换表。如果用户输入 0,下面是输出可能是什么样子的前 3 行的示例: 华氏温度:0摄氏度:-17.78 华氏度: 5 摄氏度: -15.00 华氏:10摄氏度-12.22度 等… 问题是,如果输入大于20,它将不会循环正确的次数。 下面是一个例子,说明如果用户输入5: 输出: 输入您的起始温度(华氏:5)。 华氏摄氏

  • 目前控制台打印循环中的所有值,但只需要打印最后一个

  • 我试图实现每秒循环一次的ScheduledExecutorService线程,但现在它只循环一次。 我的问题是如何设置它,使它周期性地循环,而不是一次迭代? 另外,如何将连接池传递给线程,以便每次迭代都可以查询数据库?任何帮助都非常感谢。