2011-09-23 51 views
1

我的程序正在創建一個數組並允許用戶輸入10個雙精度數字。然後程序會按從低到高的順序對它們進行排序。我有以下但編譯時收到.class預期的錯誤。任何想法爲什麼發生這種情況?注*我還沒有能夠編譯這個,所以我甚至不知道這是否會工作。 *爲什麼我會得到'.class'預期錯誤?簡單數組腳本

import java.io.*; 

public class ArrayDemo 
{ 
    public static void main(String[] args) throws IOException 
    { 
     int i = 0; 
     int j = 0; 
     int temp = 0; 
     double[] intValue = new double[10]; 
     String[] numbers = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth"}; 
     int len = intValue.length[]; 

     BufferedReader dataIn = new BufferedReader (new InputStreamReader(System.in)); 

     for (i = 0; i < len; ++i) 
      System.out.println("Enter the " + numbers[i] + " number"); 
     intValue[i] = Double.valueOf(dataIn.readLine()); 

     { 

     for (j = 0; j < (len - 1) -i; j++) 
      if (intValue[j] > intValue[j+1]) 
      { 
       temp = intValue[j]; 
       intValue[j] = intValue[j+1]; 
       intValue[j+1] = temp; 
      } 

     for (i = 0; i < 10; i++); 
     { 
      System.out.println("Array after sorting in ascending order"); 
      System.out.println(); 
      System.out.println(intValue[i]); 

     } 

     } 
    } 
} 

謝謝您的任何意見。 :)

回答

0

int temp = 0;應該double temp = 0;

int len = intValue.length[];應該int len = intValue.length;

for (i = 0; i < 10; i++);應該for (i = 0; i < 10; i++)

Sample


編輯

import java.io.*; 

public class Main 
{ 
    public static void main(String[] args) throws IOException 
    { 
     int i = 0; 
     int j = 0; 
     int k = 0; 
     double temp = 0; 
     double[] intValue = new double[10]; 
     String[] numbers = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth"}; 
     int len = intValue.length; 

     BufferedReader dataIn = new BufferedReader (new InputStreamReader(System.in)); 

     for (i = 0; i < len; ++i) { 
      System.out.println("Enter the " + numbers[i] + " number"); 
      intValue[i] = Double.valueOf(dataIn.readLine()); 
     } 


     for (j = 0; j < len; j++) 
     { 
      for(k = 0; k < len; k++) { 
       if (intValue[j] > intValue[k]) 
       { 
        temp = intValue[j]; 
        intValue[j] = intValue[k]; 
        intValue[k] = temp; 
       } 
      } 
     } 

     System.out.println("Array after sorting in ascending order"); 
     for (i = 0; i < 10; i++) 
     { 
      System.out.print(intValue[i] + ", "); 

     } 

    } 
} 
+0

謝謝!現在它吐出「輸入第一個數字」,「輸入第二個數字」等等,而不提示用戶輸入它在 中輸入的數字。System.out.println(「Enter the」+ numbers [i ] +「數字」); intValue [i] = Double.valueOf(dataIn.readLine());我相信的區域 – user951376

+0

dataIn.readLine()調用在for循環之外進行。您需要將它與前面的println()調用一起放在括號內。 –

+0

因此,我將循環內部的行移開,現在它會提示我輸入第一個數字,然後繼續詢問第一個數字,並返回ArrayIndexOutOfBoundsException錯誤。 – user951376

0
int len = intValue.length[]; 

你不需要[]長度後,你還試圖INT溫度在雙陣列

temp = intValue[j]; 

而且分配給使用值像Eclipse/NetBeans/IntelliJ這樣的IDE肯定會有所幫助!

0
int len = intValue.length[]; 

應改爲:

int len = intValue.length; 

而且,你的一些包圍的似乎是不正確的。我相信,例如,你想下面的代碼片段:

for (i = 0; i < len; ++i) 
    System.out.println("Enter the " + numbers[i] + " number"); 
intValue[i] = Double.valueOf(dataIn.readLine()); 

更改爲:

for (i = 0; i < len; ++i) 
{ 
    System.out.println("Enter the " + numbers[i] + " number"); 
    intValue[i] = Double.valueOf(dataIn.readLine()); 
} 

你有一些其他的邏輯錯誤在你的代碼。讓我知道,在根據當前答案處理代碼一段時間後,如果您有任何具體問題,我會進一步幫助您。

相關問題