不好意思,我虽然明白了你的题意,但是没有按照你的写法去做。自己写了一点,看看是否你期望的结果。
你的程序问题有两点:
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.   

    是程序没通过编译。变量定义与赋值不在一个域块里面,编译器认为是没有赋值。
    改int face1,face2,frequency[]=new int[12]; --》
    int face1=0;int face2=0;int frequency[]=new int[12];
      

  2.   

    有两个问题:
    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];