我需要从文件中读取这样的一行: 5主席12.49 编辑:我希望能够拥有更多的数据。
我需要将每个单词/数字分成不同的数据类型。第一个是int,第二个是String,第三个是double。然后我需要让它们格式化如下: 货号:椅子价格:$ 12.49数量:5
现在我知道如何格式化,我遇到的唯一问题是将字符串元素解析为他们尊重的数据类型(int,string,double)。
我试过了:
String [] lines = lineInput.split(" ");
for(String displayLines : lines) {
bufferedWriter.write(displayLines);
bufferedWriter.newLine();
System.out.println(displayLines);
}
但是只将每个字符串分隔成一个新行,而我在生活中无法弄清楚如何让每一行检查它是int,string还是double。
然后我弄乱了子串,但是无法让它工作。我甚至想过使用mod%函数和if:
if(lines.length % 2 == 0) {it's a string};
但这只适用于第一行。
当我说我自己尝试过这个时,请相信我,而不仅仅是尝试一些尝试。我只是放弃了。 StackOverFlow,你是我唯一的希望:(
答案 0 :(得分:2)
如果你的行格式为[int] [String] [double],你可以这样做:
String [] line = lineInput.split(" ");
int x = Integer.parseInt(line[0]);
String s = line[1];
double d = Double.parseDouble(line[2]);
您可以根据需要对其进行修改,以处理不同格式的行。
答案 1 :(得分:0)
我很困惑为什么你要根据空格分割行。
但无论如何,我想解决你的问题看看Integer.parseInt(),Double.parseDouble()。如果需要检查某个数字,可以使用适当的正则表达式(请参阅String.matches()方法)。或者一种可能适用于您的情况的脏方法是调用其中一种解析方法,看看它是否会引发异常......
您还可以查看Scanner类,但这可能对您所需要的内容而言过于苛刻。
答案 2 :(得分:0)
首先,一个小的nit:调用你的行“行”分割的字符串数组是误导。警告:未编译或测试。
String [] words = lineInput.split(" ");
if (words.length != 2)
System.err.println ("Error parsing line [" + lineInput + "]: " + wrong number of tokens on line");
else
try {
int numberOfItems = Integer.parseInt(words[0]);
String itemName = words[1];
double itemPrice = Double.parseDouble(words[2]);
System.out.println (itemName + " Price: $" + itemPrice + " Quantity: " + numberOfItems);
} catch (NumberFormatException ex) {
System.err.println ("Error parsing line [" + lineInput + "]: " + ex);
}
}