数组和许多错误

时间:2016-11-13 15:08:01

标签: java arrays for-loop while-loop

不知道如何解决这个问题。每次我改变一些东西时都会抛出一个不同的错误。

我必须创建数组A和B,这两个数字都很大。如果k = 0,我必须用随机数(0-20)填充A,用(50-100)填充B,如果k不等于0,那么我必须用给定的公式计算两个数组。

最后但并非最不重要的是,我必须创建第三个数组C= A[0] B[0] A [1] B[1]......

现在我正在处理这个问题:

Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Integer
    at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
    at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
    at java.util.Formatter$FormatSpecifier.print(Unknown Source)
    at java.util.Formatter.format(Unknown Source)
    at java.io.PrintStream.format(Unknown Source)
    at java.io.PrintStream.printf(Unknown Source)
    at Ld3161rdb146.main(xxx.java:50)

代码:

    public static void main(String[] args) {

        int A[] = new int [10];
        int B[] = new int [10];
        int K, i;
        float C;
        Scanner sc = new Scanner(System.in);

        System.out.println("Imants Kravalis 161RDB146");    
        System.out.print("K=");
        if (sc.hasNextInt())
            K = sc.nextInt();
        else {
            System.out.println("input-output error");
            sc.close();
            return;
        }
        sc.close();
        if (K ==0) 
        {
            Random r = new Random();
            i=0;
            while(i<10)
            {
                A[i] = r.nextInt()*0-21;
            B[i] = r.nextInt()*50-101;
            i++;
            }

        }
        else
            i=0;
            while(i<10)
            {A[i] = i+K;
             B[i] = (i+10)*K;
            i++;
            }




        System.out.println("A:");
        i=0;
        do{
            System.out.printf("%.1f\t", A[i]);
            i++;
        }while(i<10);

        System.out.println("B:");
        i=0;
        do{
            System.out.printf("%.1f\t", B[i]);
            i++;
        }while(i<10);

        for (i=0; i<20; i++) {
            C=A[i]&B[i];
            System.out.printf("%.1f\t", C);
        }



    }

}

1 个答案:

答案 0 :(得分:1)

A和B只包含整数,而不包含浮点数。 在行

System.out.printf("%.1f\t", A[i]);

您正试图将其视为浮动,更改为“%d \ t”并且它将起作用。 请参阅this以供参考。

然后你会得到一个超出界限的数组索引:

 for (i=0; i<20; i++)

由于A和B只包含10个元素,因此将20更改为10.