2

我希望我的 print 语句位于循环之外,因此该语句不会一遍又一遍地打印相同的内容。下面的 for 循环只是将一个数组中的一个数字与另一个数组进行比较,以找出找到了多少匹配项。定义上面的变量并打印下面的语句会导致“变量未初始化错误”,这是可以理解的。

for (int i = 0; i < 6; i++)
{
    int chkNum = myArray[i];
    int lottMtch = count(chkNum, rndNum);

    if (lottMtch > 0)
    {
        System.out.println(lottMtch + "matches found");
        System.out.print(chkNum);
    }
    else {
        System.out.print("no matches found");
    }
}
4

5 回答 5

3

在循环之前声明变量,然后在循环中执行您的操作,例如如果找到变量,则将其添加到变量中,然后如果大于 0 则将其打印出来。像这样......

int var = 0;
for(...) {
   if(found)
       var++;
}
if(var > 0)
    sysout(var);

当然,这段代码不起作用,但这是一个开始。为了您的学习经验,我将让您用您的代码实现这个想法。

于 2013-08-09T23:56:26.863 回答
2

这真的没有意义..如果你想试试这个...

        int lottMtch[]=new int[myArray.length];
           Arrays.fill(lottMtch, 0);
            for (int i = 0; i < 6; i++)
            {
                int chkNum = myArray[i];
               lottMtch[i] = count(chkNum, rndNum);

            }
            for (int i = 0; i < 6; i++)
            {
                       if (lottMtch[i] > 0)  
                            System.out.println(lottMtch[i] + " matches found "+ myArray[i]);
            }

如果你想找到有多少匹配的rndNummyArray试试这个

这里我假设rndNmglobal

        int lottMtch=0;

            for (int i = 0; i < 6; i++)
            {

               lottMtch += count(myArray[i], rndNum);

            }

                       if (lottMtch> 0)  
                            System.out.println(lottMtch + " matches found "+ rndNum);

根据评论中的讨论试试这个..

Map<Integer,Integer> map = new HashMap<Integer,Integer>();


       for (int i = 0; i < 6; i++)
         {
             Integer chkNum = myArray[i];
            Integer cnt = (Integer)count(myArray[i], rndNum);
              if(cnt>0)
              {
                  if(map.get(chkNum)==null)
                     map.put(chkNum,1);
                  else
                     map.put(chkNum, map.get(chkNum)+1);
              }

         }

         for (Object key : map.keySet()) 
             System.out.println(map.get(key) + " matches found "+key.toString());
于 2013-08-10T10:15:52.880 回答
2

这是因为如果您仅在循环上方声明变量并且仅在循环中初始化所述变量,则当您尝试在循环外打印它们时,无法保证它们已被初始化。

所以,也许你想要这样的东西:

int lottMtch = 0;

for (int i = 0; i < 6; i++)
{
    int chkNum = myArray[i];
    lottMtch += count(chkNum, rndNum);
    //System.out.print(chkNum); this would not really make sense outside of the loop
}

if (lottMtch > 0)
{
    System.out.println(lottMtch + "matches found");
}
else 
{
    System.out.print("no matches found");
}
于 2013-08-09T23:53:26.947 回答
0

如果您打算在循环退出后访问它,则需要在循环外声明一个变量。

于 2013-08-09T23:54:45.810 回答
-2

您需要在循环外初始化变量。尝试这个:

int chkNum = 0;
int lottMtch = 0;

for (int i = 0; i < 6; i++)
{
    chkNum = myArray[i];
    lottMtch = count(chkNum, rndNum);

}

if (lottMtch > 0)
{
    System.out.println(lottMtch + "matches found");
    System.out.print(chkNum);
}
else {
    System.out.print("no matches found");
}
于 2013-08-09T23:58:43.667 回答