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

Чтобы подробнее остановиться в случае, если ОП не осознает, давайте говорить, что вы вводите эти числа [1, 3, -4]. P [0] = 1, P [1] = 3, N [2] = -4 (таким образом, оставляя N [0] и N [1] без значений). –

+0

О, боже, я понял! Я не понимал, что он поднимает счетчик, а другой массив не получает число для этого счета. Я исправил его, и он работает. Спасибо. :) –