2016-11-13 50 views
-4

不知道如何解決這個問題。每當我改變一些東西時,拋出一個不同的錯誤。數組和許多錯誤

我必須創建數組A和B,都是10個數字大。如果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); 
     } 



    } 

} 
+2

1)有些[推薦讀物] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)和2.)你對某些符號的含義似乎有很多誤解。你應該(重新)訪問一些基本知識。 –

+4

請不要在這裏帶來激進的態度。我編輯了一些東西 - 我們不需要閱讀你的挫敗感。 –

回答

1

A和B只包含整數,而不是浮點數。 該行

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

你試圖把它當作一個浮動,改爲「%d \ t」和它的工作。 請參閱this以供參考。

然後,你將得到的陣列索引超出範圍從這樣的:

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

由於A和B僅包含10個元素,更改20至10

+0

你是我的救星 –