2014-12-12 3 views
0

내 invoer.txt 파일에 이중 값이 있습니다. 그러나 Java는 반환 값을 제공합니다. 값은 없습니다. 어떻게 해결할 수 있습니까? 왜냐하면 그 코드가 효과가 있다고 생각하기 때문입니다. txt 파일의파일에 값이 없습니다.

import java.io.*; 
import java.util.*; 

public class Lezen { 
    private static int aantal = 0; 
    private static double totaal = 0; 

    public static void main(String[] args) throws FileNotFoundException { 


    Scanner sc = new Scanner(new File("src/Opdracht_11_1/invoer.txt")); 

    while (sc.hasNextDouble()) { 
     double cijfer = sc.nextDouble(); 

     aantal++; 
     totaal = totaal + cijfer; 

     System.out.println(cijfer); 
    } 

    System.out.println("Er staan " + aantal + " getallen in de file"); 
    System.out.println("Het gemiddelde is: " + (totaal/aantal)); 


    sc.close(); 
     } 
    } 

내용 :

45.13 
188.001 
-17.3 
12345 
-7980.675 

출력 :

어의 staan ​​드 파일에서 0 getallen

헷의 gemiddelde은 다음과 같습니다 NaN이

+0

파일에 데이터가 저장되는 방식은 무엇입니까? – WannaBeCoder

+0

파일 내용을 표시하십시오. 프로그램의 결과는 무엇입니까? (만약 당신이 질문의 텍스트로 영어 번역을 줄 예정이라면 비슷한 방식으로 코드를 변경하는 것이 유용 할 것입니다 :) –

+0

텍스트는 소수점'.'을 사용합니까 아니면 십진수를 사용하지 않습니까 대신 십진수 쉼표를 사용 하시겠습니까? –

답변

1

나는이 생각되는 로케일 문제

  • Scanner.hasNextDouble 및 nextDouble 방법은 소수 "포인트"등의 로케일 고유의 "LocalDecimalSeparator"문자를 사용하여 설명되어 있습니다.

  • OP의 언어는 네덜란드어 인 것으로 보입니다. (즉 ... 구글 번역 어떤 생각입니다)

  • 은 "NL-NL"로케일의 로케일 고유의 "LocalDecimalSeparator"문자 ","해당 페이지에 따라 : http://www.localeplanet.com/java/nl-NL/

그러나 입력 파일은 "." 문자를 소수점으로 사용합니다.

이로 인해 파일의 번호가 스캐너에서 허용되지 않을 수 있습니다.

"." 소수점은 ","문자를 가리 킵니다. 당신은이 외부 작업을 수행 할 수 있습니다

  • :이 문제는 당신이 주어진 파일을 읽을해야하는 경우

    는 다음 솔루션은 파일을 읽을 때 적용되는 로케일을 변경하는 것입니다 신청서; 예 : 환경 변수를 변경하여 (유닉스/리눅스에서).

  • 응용 프로그램 내에서 기본값 Locale을 변경하여이 작업을 수행 할 수 있습니다. 예 : Locale.setDefault(...)을 사용하십시오.

  • 특정 Scanner에만 가능합니다. 예 : Scanner.useLocale(...)을 사용하십시오. (참조 : How to specify decimal delimiter)