2017-12-10 6 views
0

double을 포함하는 파일에서 nextDouble()을 사용할 때 java.util.inputmismatchexception을 얻습니다. 여기에 코드의 관련 섹션 :(Java) 파일을 검색 할 때 입력 오류가 발생했습니다.

public static double[] getGravity() throws IOException 
{ 
    Scanner file = new Scanner("SurfaceGravity.txt"); 
    double[] gravity = new double[8]; 
    for(int index = 0; index < gravity.length; index++) 
     gravity[index] = file.nextDouble(); //Here is where I get the error 
    file.close(); 
    return gravity; 
} 

는 그리고 여기에 내가 토큰이 늘어나는만큼 잘못된 유형이지만 때 inputmismatchexception가 발생하는 인상이었다 SurfaceGravity.txt

의 내용
3.700465457603474 
8.8661999605471 
9.8 
3.697967684866716 
24.776754466506414 
10.43814587026926 
8.861473215210253 
11.131680688084042 
0.6128071987535232 

입니다 파일의 모든 토큰에 복식이라고 말할 수 있으므로 약간 혼란 스럽습니다.

답변

0

문자열에 SurfaceGravity.txt의 이중 값이 없습니다.

지정된 문자열로부터 스캔 된 값을 생성하는 Scanner를 새롭게 작성 : 당신은 아마 new Scanner(new File("SurfaceGravity.txt"))

Scanner(String)에 대한 자바 독을 참조 할 수 있습니다.

그리고 Scanner(File)은 지정된 파일로부터 스캔 된 값을 생성하는 Scanner를 새롭게 작성합니다.

0

당신이 준 파일은 읽으려는 파일을 초기화하지 않았습니다.

구현에 몇 가지 문제가 있습니다. 예를 들어 파일 내의 항목 수가 변경되었다고 가정하면 구현을 변경해야합니다. 즉, 8 개 값으로 제한됩니다.

public static List<Double> getGravity() throws IOException{ 
    File file = new File("SurfaceGravity.txt"); 
    Scanner input = new Scanner(file); 

    List<Double> list = new ArrayList<>(); 
    while(input.hasNextDouble()){ 
     list.add(input.nextDouble()); 
    } 
    return list; 
} 

참고 : 그것은 절대적으로 필요한 경우 double[]을 사용할 수 있습니다,하지만 당신은 파일의 줄 번호를 찾을 필요가 것입니다.

관련 문제