首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dice程序在二维数组中的越界错误

Dice程序在二维数组中的越界错误
EN

Stack Overflow用户
提问于 2013-12-06 23:02:26
回答 2查看 356关注 0票数 0

所以我创建了一个程序,将z和y的边滚动x次,在第一个for循环的第一行,我一直得到一个越界错误。然而,我不确定这是为什么,循环计数从0到(z-1)。我基本上处于这个程序的最后阶段,我需要stackoverflow社区的帮助。

代码语言:javascript
复制
public class Ass11f {

    public static void main(String[] args) {
        EasyReader console = new EasyReader();
        System.out.print("Enter how many times you want to roll the die: "); 
        int x = console.readInt();
        System.out.print("Enter the amount of sides: ");
        int y = console.readInt();          
        System.out.print("Enter the amount of die: ");
        int z = console.readInt();      
        int[][] dice = new int[x][z];
        int row = 0;
        for (int i = 0; i<z; ++i){
             dice[row][i] += ((int)(Math.random()*y)+1);
             if ((i == z-1)&&(row!=x)) {
                i = 0;
                ++row;
             }
        }     
        row = 0;
        int[] sum = new int[x];
        for (int j = 0; j<z; ++j){
            sum[row]+=dice[j][row];
            if ((j == z-1)&&(row!=x)) {
                j = 0;
                ++row;          
            }
        }                                                                                                                                                                                           
        int[] counter = new int[2*y];
        int k = 0;
        while (k<sum.length){
            for (int l = 0;l<((2*y)-1);++l){
                if (sum[k]==l) ++counter[l];
                if (l==((2*y)-1)) {
                    ++k;
                }
            }
        }   
        for (int m = 0;m<sum.length;++m) System.out.println(sum[m]+"'s: "+counter[m]+"times, "+((((double)counter[m])/x)*100)+"%");                                                   
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-12-06 23:19:28

第一个循环:

代码语言:javascript
复制
for (int i = 0; i<z; i++){
  dice[row][i] += ((int)(Math.random()*y)+1);
  if ((i == z-1)&&(row!=x-1)) {
    i = -1;
    ++row;
  }
}

第二个循环:

代码语言:javascript
复制
for (int j = 0; j<z; j++){
  sum[row]+=dice[j][row];
  if ((j == z-1)&&(row!=x-1)) {
    j = -1;
    ++row;          
  }
} 

第三个循环:永远运行。我不确定这是要达到什么目的,所以我不能为你修复它...

票数 0
EN

Stack Overflow用户

发布于 2013-12-06 23:24:37

有x行,但您正在使用z作为行循环

代码语言:javascript
复制
int[][] dice = new int[x][z]; <-- x is the row count
int row = 0; 

for (int i = 0; i < z; ++i){  <--- The outer loop is iterating the rows (x), 

下面是如何遍历二维数组的方法

代码语言:javascript
复制
int[][] dice = new int[x][z];

for (int i = 0; i < x; i++){
   for (int j = 0; j < z; j++){
      // do something with dice[i][j]
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20427063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档