2015-01-06 1 views
1

안녕하세요, 저는 문제가 있습니다. hasNextInt()을 사용하는 파일에서 정수를 합산하려고하지만 합계가 0이됩니다. 내 실수로 나를 도와주세요.파일을 가져 와서 정수를 합산했지만 0을 대답으로 얻으십시오.

여기에 코드입니다 :

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

public class Number4 { 

public static void main(String[] args) { 
    Scanner square = null; 

    try 
    { 
     square = new Scanner(new FileInputStream("Squares.txt")); 
    } 
    catch(Exception e) 
    { 
     System.out.print("File not found"); 
     System.exit(0); 
    } 

    String num1,num2,num3,num4,num5,num6,num7,num8,num9,num10,num11,num12,num13,num14,num15,num16,num17,num18,num19,num20; 

    num1 = square.next(); 
    num2 = square.next(); 
    num3 = square.next(); 
    num4 = square.next(); 
    num5 = square.next(); 
    num6 = square.next(); 
    num7 = square.next(); 
    num8 = square.next(); 
    num9 = square.next(); 
    num10 = square.next(); 
    num11 = square.next(); 
    num12 = square.next(); 
    num13 = square.next(); 
    num14 = square.next(); 
    num15 = square.next(); 
    num16 = square.next(); 
    num17 = square.next(); 
    num18 = square.next(); 
    num19 = square.next(); 
    num20 = square.next(); 

    System.out.println(""+num1+"\n"+num2+"\n"+num3+"\n"+num4+"\n"+num5+"\n"+num6+"\n"+num7+"\n"+num8+"\n"+num9+"\n"+num10+num11+"\n"+num12+"\n"+num13+"\n"+num14+"\n"+num15+"\n"+num16+"\n"+num17+"\n"+num18+"\n"+num19+"\n"+num20); 


    int next,sum = 0; 

    while(square.hasNextInt()) 
    { 
     next = square.nextInt(); 
     sum = next + sum; 
    } 


    System.out.print("The sum is "+sum); 
    square.close(); 

} 

} 
+0

당신이 Squares.txt 파일을 제공 할 수있다? 당신은 이미 평방 호출 할 수 있습니다. next() 20 times –

+0

당신은 합계 전에 모든 숫자를 읽었습니다 !!! 그것은 남은 숫자가없는 것을 의미합니다 – Spektre

+0

The Squares.txt 파일에는 1-10의 숫자의 제곱 수가 1 1 2 4 3 9 등으로 만 들어 있습니다. –

답변

1

당신이 하위 집합을 코드가 같은 일을하고의. 너무 많은 변수를 만들 이유. 단순히 이상의 파일, 쇼의 모든 정수를 반복하고 요약.

int next,sum = 0; 

while(square.hasNextInt()) 
{ 
    next = square.nextInt(); 
    System.out.println(next+"\n"); 
    sum = next + sum; 
} 
3

square.next()를 사용하여 이미()는 square.nextInt을하고있는 시간을 기준으로 전체 파일을 읽습니다. 파일을 다시하거나 코드에 도달 파일, 20 개 번호가 있다면 당신은

+0

아, 파일을 처음 보았습니다. 적절한 방법이 있습니까? 그러나 hasNextInt()를 사용합니다. –

+0

빠른 수정은 num num = = square.next(); – user1121883

+0

나는 그것을했고 작동하지만 파일에서 값을 먼저 표시하려면 어떻게해야합니까? 그리고 나서합시다. –

2

를 반복 동시에 NUM 개 * 쓰기 : 이미 num# = square.next(); 라인에 전체 파일을 읽을 수 있기 때문에

next = square.nextInt(); 

는 아무것도 볼 수 없습니다 . . 은 (또한 당신도 당신이 원하는 경우 또한,이 루프의 숫자의 합을 계산할 수있다 이미했던 것보다 훨씬 간단 파일에 번호를 인쇄 할 수 있습니다 이런 식으로 뭔가 :.

int sum = 0; 
for (int i = 0; i < 20 && square.hasNextInt(); ++i) { 
    int num = square.nextInt(); 
    sum += num; 
    System.out.println(num); 
} 
System.out.print("The sum is " + sum); 
square.close(); 
관련 문제