2013-04-29 28 views
0

首先,我非常非常新。任何幫助表示讚賞。所以,我可以在一切都是int時運行,但由於某種原因將其改爲double,我只能輸入第一個值和它的錯誤。我不明白爲什麼我不能這樣做:Java簡介 - 有什麼不對?

 int datVal = Integer.parseInt(inNum); 

     double [] iOne; 
     iOne = new double[datVal]; 

直到我運行它或調試它沒有錯誤。下面是我得到了什麼:

import java.util.Arrays; 

import javax.swing.JOptionPane; 

public class arStats2 { 
    public static void main(String[] args) { 
     double med, men, min, max; 
     String inNum = JOptionPane.showInputDialog("Enter the number of data values:"); 

     int datVal = Integer.parseInt(inNum); 

     double [] iOne; 
     iOne = new double[datVal]; 

     double [] iTwo; 
     iTwo = new double[datVal]; 

     int index=0; 

     for (index=0; index < iOne.length; index++) { 

      String value = JOptionPane.showInputDialog("Input a data value:"); 
      int valIn = Integer.parseInt(value); 
      iOne[index] = valIn; 
     } 

     System.arraycopy(iOne, 0, iTwo, 0, iOne.length); 
     Arrays.sort(iOne); 

     String out1 = "Sorted data: "; 
     for (int i=0; i<iOne.length; i++) { 
      out1 = out1 +iOne[i]+""; 
     } 
     out1 = out1 +"\n"; 

     String out2 = "Original data: "; 
     for (int i2=0; i2<iTwo.length; i2++) { 
      out2 = out2 +iTwo[i2] + ""; 
     } 
     out2 = out2 +"\n"; 

     med = median(iOne); 
     men = mean(iTwo); 
     max = computeMax(iOne); 
     min = computeMin(iOne); 

     JOptionPane.showMessageDialog(null, out2 +out1 +"Min Value: " +min +"\n" 
             +"Max value: " +max +"\n" 
             +"Median value: " +med +"\n" 
             +"Mean value: " +men +"\n"); 
     } 

    public static double median(double[] iOne) { 

     double med; 
     int index, indexHi, indexLo; 
     if ((iOne.length %2) !=0) { 
      index = iOne.length/2; 
      med = iOne[index]; 
     } 
     else { 
      indexHi = iOne.length/2; 
      indexLo = indexHi = 1; 
      med = (iOne[indexLo] + iOne[indexHi])/2; 
     } 
     return med; 
    } 

    public static double mean(double[] iOne) { 
     double sum = 0; 
     for (int i = 0; i < iOne.length; i++) { 
      sum += iOne[i]; 
     } 
     return sum/iOne.length; 
    } 

    public static double computeMax(double[] iOne) { 
     double max = (iOne.length - 1); 
     return max; 
    } 

    public static double computeMin(double[] iOne) { 
     double min; 
     min = iOne[0]; 
     return min; 
    } 
    } 

對不起,不包括本。感謝您所有的快速回復!錯誤是:

Exception in thread "main" java.lang.NumberFormatException: For input string: "7.2" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
    at java.lang.Integer.parseInt(Integer.java:456) 
    at java.lang.Integer.parseInt(Integer.java:497) 
    at arStats2.main(arStats2.java:25) 
+2

**錯誤說**是什麼? – SLaks 2013-04-29 20:03:47

+0

什麼是錯誤? – CodeChimp 2013-04-29 20:03:55

+0

如果您研究運行時間與編譯時間,可以幫助您更好地理解錯誤。 http://stackoverflow.com/questions/846103/runtime-vs-compile-time – sircapsalot 2013-04-29 20:09:47

回答

2

您需要解析的數值爲雙位置:

for (index=0; index < iOne.length; index++) { 

     String value = JOptionPane.showInputDialog("Input a data value:"); 
     double valIn = Double.parseDouble(value); // this line is changed 
     iOne[index] = valIn; 
    } 

這將使它具有雙重價值的工作,但也有在你的代碼的其他問題,如指出,由ValarDohaeris提供。

+0

我試着在發佈之前將它解析爲double。當我這樣做時,它會提示我: iOne = new double [datVal]; 將datVal更改爲int。 – Smeaux 2013-04-29 20:53:38

+0

我複製粘貼你的代碼並添加我的修改。輸出似乎不正確,但代碼中沒有警告或錯誤。 – NoToast 2013-04-29 20:57:37

+0

所以你看起來是這樣的: 'double med,men,min,max; String inNum = JOptionPane.showInputDialog(「輸入數據值的數量:」); double datVal = Double.parseDouble(inNum); iOne [index] = datVal; double [] iOne; iOne = new double [datVal];' 對不起。就像我說的,我是一個新手。我發了3封電子郵件給我的教授,但沒有迴應。 – Smeaux 2013-04-29 21:37:49

0

如果您可以更具體地瞭解錯誤,這將會有所幫助。 不過,也有代碼的兩個部分,我認爲是錯誤的:

indexLo = indexHi = 1; 

應該

indexLo = indexHi - 1; 

而且在computeMax()你應該有:

double max = iOne[iOne.length - 1]; 
+0

感謝您的支持! – Smeaux 2013-04-29 20:49:57

-1

但由於某種原因將其改爲雙倍,我只能輸入第一個值和它的錯誤。

井的原因datVal = Integer.parseInt(inNum);要求整和您傳遞一個包含雙,這將導致NumberFormatException異常飛出字符串。

你應該用try{} catch {}塊包圍它並做一些相關的事情。

+0

爲什麼downvote?我答案的哪一部分是錯誤的? – Nimooli 2013-04-29 20:45:53

+0

我沒有downvote!我不知道這是對還是錯! – Smeaux 2013-04-29 20:49:19