2014-04-29 31 views
0

所以,在这里我试图从数组中取一些整数并将它们添加到每一行中。 然后我将这个总和存储为rowTotal。如果rowTotal大于maxRow .... 我累了。有人能指出明显吗?从2d数组中找出最高总数并在JAVA中打印

 int maxRow = 0; 
    int playNum = 0; 

    for(int col = 0;col < score[0].length;col++) 
     maxRow += score[0][col]; 
    for(int row = 1;row < score.length;row++) 
    { 
     int rowTotal = 0; 
     for(int col = 0;col < score[row].length;col++)  
      rowTotal += score[row][col]; 
     if(rowTotal>maxRow) 
     { 
      playNum = row; 
      maxRow = rowTotal; 
     } 
     System.out.println("Player " + (playNum + 1) + " is victorious with a score of " + maxRow); 
    } 
+1

@ Ferret9,谢谢你让代码易读! – Hans

回答

2

您需要将System.out.println从第二个循环中取出。另外,您可以取消第一个for循环。

int maxRow = 0; 
int playNum = 0; 
for(int row = 0;row < score.length;row++) 
{ 
    int rowTotal = 0; 
    for(int col = 0;col < score[row].length;col++) 
    { 
     rowTotal += score[row][col]; 
    } 
    if(rowTotal>maxRow) 
    { 
     playNum = row; 
     maxRow = rowTotal; 
    } 

} 
System.out.println("Player " + (playNum + 1) + " is victorious with a score of " + maxRow); 
+0

我正在尝试查找总计最大的行,并列出行号以宣告获胜者。问题是它打印出不止一个赢家。它的作品很好,只有两名选手,但不止它可以打印多达五名获胜者。 –

+1

原因是for循环中的System.out.println()。拿出来,它会正常工作。我已经在我的代码片段中完成了。 – Priyesh

+0

我认为这个缺陷是在我的逻辑中,而不是代码错误。这是我第一次用任何语言编写的程序,所以我始终错过显而易见的东西。 –

0
  1. 你从1开始排,应该是0
  2. 你为什么改变MaxRow的+ =得分[0] [COL]; ?

这些应该解决您的问题,虽然我不知道它是什么

0

System.out.println(..应该是循环之外。

否则我没有看到这个问题,除了代码可以改进(缩短)的事实。你会得到什么错误/意外结果?

+0

我正在尝试查找总计最大的一行,并列出行号以宣布获胜者。问题是它打印出不止一个赢家。它的作品很好,只有两名选手,但不止它可以打印多达五名获胜者。 - –

+0

完成@Priyesh和我的建议。这将解决问题。用Priyesh写的代码替换你的代码。 – Illidanek

0

如果您从第零个索引开始第二个for循环,则根据我所知,不需要第一个for循环。不知道为什么你在第一个循环中总结maxRow,除非我完全忽略了这一点。