2016-12-03 151 views
0

我知道有許多問題已經在簡單地從一個txt文件中讀取數據,但我得到了txt文件中包含這多種數據類型閱讀:要從一個txt文件的Java

1980 Aug 945 100 Allen1983 Aug 962 100 Alicia1984 Sep 949 100 Diana 

第一個數字是一年,一個月,一個風壓,結速風速和颶風的名稱。這種模式有幾百個條目,我必須將每個不同的數字放到它自己的數組(年[],幾個月[],壓力[]等等)中。)

我試過很多不同的方法,但這裏是一個最近的嘗試我做的一個示例:

import java.io.IOException; 
import java.io.File; 
import java.io.FileReader; 
import java.io.PrintWriter; 
import java.util.Scanner; 
public class Hurricanes2 { 
public static void main(String[] args) throws IOException { 
int i = 0; 
    int token1 = 0; 
    String token2 = ""; 

    int[] years = new int[1000]; //token 1 
    String[] months = new String[1000]; //token 2 
    String[] names = new String[1000]; 
    int[] pressure = new int[1000]; //token 1 
    int[] windSpeed = new int[1000]; //token 1 
    int[] category = new int[1000]; //token 1 

    Scanner s = new Scanner (new FileReader("hurcdata2.txt")); 

while (s.hasNext()) { 
     if (s.hasNextInt()) { 
      token1 = s.nextInt(); 
      if (token1 >= 1980) { 
       years[i] = token1; 
      } 
      else if (token1 >= 1000) { 
       pressure[i] = token1; 
      } 
      else { 
       windSpeed[i] = token1; 
      } 
     } 
     else if (s.hasNext()) { 
      token2 = s.next(); 
      if (token2.equals("Jun") || token2.equals("Jul") || token2.equals("Aug") || token2.equals("Sep") || token2.equals("Oct") || token2.equals("Nov")) { 
       months[i] = token2; 
      } 
      else { 
       names[i] = token2; 
      } 
     } 
     token1 = 0; 
     token2 = ""; 
     i++; 
     } 

當我使用打印任何陣列的for-each循環,所有的值都爲0。除當我打印只是所述第一元件(例如,[0 ])它會顯示正確的值。任何其他索引> 0仍顯示0. 我知道它有很多錯誤,但在這一點上,我正在嘗試一些奇怪的事情,使其工作。我並沒有像這個問題的整體解決方案那樣尋找這個代碼的修正。

+0

您是否在調試器中單步執行代碼? – OldProgrammer

+0

我試過了,但沒有錯誤。一旦我按下了一步,它就運行了整個代碼 –

+2

僅僅因爲沒有「錯誤」並不意味着沒有問題。顯然有一個問題,因爲你發佈一個問題。逐步檢查每一行代碼,檢查變化時的變量等。學習正確的調試技術與學習語言一樣重要。 http://blog.codeunion.io/2014/09/03/teaching-novices-how-to-debug-code/ – OldProgrammer

回答

0

您可以嘗試拆分空格處的單詞,然後將其存儲在Objects的數組中。然後您可以使用instanceof來比較類型,例如if(obj instanceof Integer) ...