要从一个txt文件的Java

要从一个txt文件的Java

问题描述:

我知道有许多问题已经在简单地从一个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

您可以尝试拆分空格处的单词,然后将其存储在Objects的数组中。然后您可以使用instanceof来比较类型,例如if(obj instanceof Integer) ...