2013-04-29 3 views
0

우선, 나는 아주, 아주 새롭다. 어떤 도움을 주셔서 감사합니다. 그래서, 모든 것이 int 일 때 이것을 실행시킬 수 있었지만, 어떤 이유로 그것이 double으로 바뀌면, 첫 번째 값만 입력 할 수 있고 오류가 있습니다. 왜 내가이 일을 할 수 없는지 이해가 안되요.Java 소개 - 뭐가 잘못 되었나요?

실행하거나 디버깅 할 때까지 오류가 없습니다. 여기에 내가 가진 것 :

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

+0

무엇이 오류입니까? – CodeChimp

+0

런타임과 컴파일 시간을 조사 할 때 오류를 더 잘 이해할 수 있습니다. http://stackoverflow.com/questions/846103/runtime-vs-compile-time – sircapsalot

답변

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

게시하기 전에 이중으로 구문 분석을 시도했습니다. 내가 그 일을 할 때 줄에 나를 묻습니다. iOne = new double [datVal]; datVal을 int로 변경하십시오. – Smeaux

+0

코드를 복사하여 붙여 넣었습니다. 출력이 정확하지는 않지만 코드의 경고 나 오류가 없습니다. – NoToast

+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

0

오류에 대해 더 구체적으로 설명하면 도움이 될 것입니다.

indexLo = indexHi = 1; 

indexLo = indexHi - 1; 

그리고 computeMax() 당신이해야해야한다 : 그러나, 내가 잘못 생각하는 코드의 두 부분이 있습니다

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

잡기에 감사드립니다! – Smeaux

-1

는하지만, 웬일인지 그것을 두 배로 바꾸는 것으로, 나는 첫번째로 값만을 입력 할 수 있고 에러가 난다.

음 이유는 datVal = Integer.parseInt(inNum);은 정수를 기대하고 당신이 그것을 던져되는 NumberFormatException이 발생되는 더블 포함 된 문자열을 전달하고 있습니다.

블록을 try{} catch {} 블록으로 묶고 그것에 대해 조치해야합니다.

+0

왜 downvote? 내 대답의 어느 부분이 잘못 되었습니까? – Nimooli

+0

나는 downvote하지 않았다! 그것이 옳았는지 잘못되었는지 나는 알지 못할 것입니다! – Smeaux

관련 문제