要求定义一个int型数组a,包含100个元素,保存100个随机的4位数。再定义一个
int型数组b,包含10个元素。统计a数组中的元素对10求余等于0的个数,保存
到b[0]中;对10求余等于1的个数,保存到b[1]中,……依此类推。public  class java15{
  public  static void main(String[] args){
     int[] array;
            array= new int[100];
   for(int i=0;i<array.length;i++){
 array[i] =(int) (Math. random()*10000);// 这里怎么把随机的四位数赋值给数组
  System.out.println(array[i]+"  ");
   }
   int b[]=new int[10];
   int sum=0 ,k=0;
   
   for(int j=0;j<b.length;j++ ){
    for(sum=0,k=0;k<array.length;k++){
     if(array[k]%10==j)  sum++;
                    b[j]=sum;
    }
                   System.out.printf("b[%d]=%d\n"+j,b[j]);
    
    }
    
   }
}
 运行之后出现 以下问题,求大侠分析 哪方面的问题?
b[10]=Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier 'd'
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at java15.main(java15.java:18)

解决方案 »

  1.   

    System.out.printf("b[%d]=%d\n"+j,b[j]);
    这一句错了。
    把加号改成逗号。
      

  2.   

    System.out.println("b[" + j + "]=" + b[j]);
      

  3.   

     System.out.printf("b[%d]=%d\n"+j,b[j]);
    +j改为,j%是占位符,后面才一个参数
      

  4.   

    这个循环就已经把生成的数赋给数组了。
    array[i] =(int) (Math. random()*10000);
    将等号右边表达式的值赋给array[i]
      

  5.   

    public static void main(String[] args) {
    int[] array;
    array = new int[100];
    for (int i = 0; i < array.length; i++) {
    array[i] = (int) (Math.random() * 10000);// 这里怎么把随机的四位数赋值给数组
    System.out.println(array[i] + "  ");
    }
    int b[] = new int[10];

    for(int a : array) {
    int i = a%10; 
    b[i] = b[i] + 1;
    }

    for(int bb : b) {
    System.out.println(bb);
    }
    }
      

  6.   

    System.out.printf("b[%d]=%d\n"+j,b[j]);
    应该是 System.out.printf("b[%d]=%d\n",j,b[j]);