2013-02-16 2 views
0

내 Java 할당 중 하나는 파일에서 숫자를 가져 와서 두 개의 배열로 구분하는 것입니다. 하나는 P (양수)와 N (음수)로 명명했습니다. 양수로는 작동하지만 음수에서는 0을 계속 출력합니다. 나는 이유를 모른다! 도움?Java 프로그램이 배열에서 음수를 출력하지 않습니까?

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

public class Prog404a { 
    public static void main(String[] args) { 
     Scanner inFile = null; 
     try { 
      inFile = new Scanner(new File("prg404a1.dat")); 
     } catch (FileNotFoundException e) { 
      System.out.println("File not found!!"); 
      System.exit(0); 
     } 
     int temp = 0; 
     int P[] = new int[23]; 
     int N[] = new int[23]; 
     int i = 0; 
     while (inFile.hasNext()) { 
      temp = inFile.nextInt(); 
      if (temp < 0) { 
       N[i] = temp; 
      } 
      if (temp > 0) { 
       P[i] = temp; 
      } 
      i++; 
     } 
     for (int x = 0; x < i; x++) { 
      System.out.println(P[x] + "\t" + N[x]); 
     } 
    } 
} 

편집 : 양수로는 효과가 없습니다. 단지 몇 가지.

+5

'N'과 'P'모두에 대해 동일한 색인을 사용하므로, 예를 들어 첫 번째 음의 정수 앞에 3 개의 양수가 있으면 'N [3]'에 삽입됩니다. 그게 니가 원하는거야? –

+1

코드 디버깅 방법을 배우는 것이 좋습니다. IDE에서 디버거를 사용하거나 코드에'System.out.println()'호출을 많이 추가하여 무슨 일이 일어나고 있는지 확인할 수 있습니다. –

+0

숫자는 어떻게 구분 되나요? 샘플 데이터를 볼 수 있습니까? –

답변

4

어쩌면 당신은 옳지 않은가?

양수는 하나, 음수는 하나씩 두 개의 카운터를 사용해야합니다. 그렇지 않으면 이 설정되지 않았으므로 항목의 절반이 분명히 0이됩니다..

+2

OP가 실현되지 못할 경우에 대비하여 더 자세히 설명하려면이 번호 [1, 3, -4]를 입력한다고 가정 해 봅시다. P [0] = 1, P [1] = 3, N [2] = -4 (따라서 N [0] 및 N [1]을 값없이 남겨둔다). –

+0

오 마이 갓! 나는 그것이 카운터를 들고 있다는 것을 깨닫지 못했고 다른 배열은 그 수에 대한 숫자를 얻지 못했습니다. 나는 그것을 고쳤다. 고맙습니다. :) –