不好意思,我虽然明白了你的题意,但是没有按照你的写法去做。自己写了一点,看看是否你期望的结果。
你的程序问题有两点:
1. face1和face2没有初始化。
2. 对数组处理有问题,筛子结果应该是12种,但是在你的 ++frequency[face1+face2];这一句话中会出现 数组下表超出的问题,因为当两个数都是6的时候,frequency[12]是不存在的。所以我采用了int[13]。
import javax.swing.*;
public class zz
{ public static void main(String args[])
{
int face1=-1;
int face2=-1;
int frequency[]=new int[13];
String output="";
for(int roll=1;roll<=3600;roll++)
{ face1=1+(int)(Math.random()*6);
face2=1+(int)(Math.random()*6);
frequency[face1+face2]++;
}
System.out.println("Sum\tFrequency");
for(int i=2;i<13;i++)
{ System.out.println(i+"\t"+frequency[i]);
} }
}
你的程序问题有两点:
1. face1和face2没有初始化。
2. 对数组处理有问题,筛子结果应该是12种,但是在你的 ++frequency[face1+face2];这一句话中会出现 数组下表超出的问题,因为当两个数都是6的时候,frequency[12]是不存在的。所以我采用了int[13]。
import javax.swing.*;
public class zz
{ public static void main(String args[])
{
int face1=-1;
int face2=-1;
int frequency[]=new int[13];
String output="";
for(int roll=1;roll<=3600;roll++)
{ face1=1+(int)(Math.random()*6);
face2=1+(int)(Math.random()*6);
frequency[face1+face2]++;
}
System.out.println("Sum\tFrequency");
for(int i=2;i<13;i++)
{ System.out.println(i+"\t"+frequency[i]);
} }
}
解决方案 »
- JAVA中接口(interface)中的成员变量为什么public static final 的?
- 这个为什么在主函数里能直接用?
- src的存在与否?
- 在java编译的时候出现error: cannot read: Student.java?怎么解决?
- 单击按钮无法弹出窗口
- 新手问oracle问题!能帮忙的帮帮我!!!
- 急!!如何在exit菜单的事件处理中实现退出程序之前的保存等工作????
- 经常听说java是开放的,而.net是不开放的,请问这个开放是什么意思。
- Oracle培训到哪里好
- 大家进来看看好吗?
- 高手们进来帮忙啊~哪里有错误啊~ 关于MANDELBROT SET的~
- 运行java程序时奇怪的提示,大家帮忙啊
改int face1,face2,frequency[]=new int[12]; --》
int face1=0;int face2=0;int frequency[]=new int[12];
1、数据可能超限,这个编译不出错,但是运行时可能出错。
int face1,face2,frequency[]=new int[12]; 改为
int face1,face2,frequency[]=new int[13]; 2、face1,face2 没有初始化(因为编译器认为第一个循环可能没有运行,所以报错),不过按楼主的意思,应该是这样才对的:
output+="\n"+total+"\t"+frequency[face1+face2]; 改为
output+="\n"+total+"\t"+frequency[total];