要从一个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. 我知道它有很多错误,但在这一点上,我正在尝试一些奇怪的事情,使其工作。我并没有像这个问题的整体解决方案那样寻找这个代码的修正。
答
您可以尝试拆分空格处的单词,然后将其存储在Objects
的数组中。然后您可以使用instanceof
来比较类型,例如if(obj instanceof Integer)
...
您是否在调试器中单步执行代码? – OldProgrammer
我试过了,但没有错误。一旦我按下了一步,它就运行了整个代码 –
仅仅因为没有“错误”并不意味着没有问题。显然有一个问题,因为你发布一个问题。逐步检查每一行代码,检查变化时的变量等。学习正确的调试技术与学习语言一样重要。 http://blog.codeunion.io/2014/09/03/teaching-novices-how-to-debug-code/ – OldProgrammer