不知道如何解决这个问题。每次我改变一些东西时都会抛出一个不同的错误。
我必须创建数组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);
}
}
}
答案 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.