日期:2014-05-20  浏览次数:20780 次

帮忙看看 这个程序 有点小问题 ?

要求定义一个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)

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

%是占位符,后面才一个参数
------解决方案--------------------
楼上正解。。
------解决方案--------------------
引用:
是啊  再想问一下 怎么把随机的四位数赋给数组。

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