我是Java的新手,必须读取文件,然后将读取的内容转换为变量。我的文件包含一个水果,然后一个价格,并且包含很长的清单。该文件如下所示:
Bananas,4
Apples,5
Strawberry,8
...
Kiwi,3
到目前为止,我已经创建了两个变量(double price
和String name
),然后设置了一个从文件读取的扫描程序。
public void read_file(){
try{
fruits = new Scanner(new File("fruits.txt"));
print_file();
}
catch(Exception e){
System.out.printf("Could not find file\n");
}
}
public void print_file(){
while(fruits.hasNextLine()){
String a = fruits.nextLine();
System.out.printf("%s\n", a);
return;
}
}
目前,我只能打印出整行。但是我想知道如何将其分解以将行存储到变量中。
答案 0 :(得分:2)
因此,字符串a
具有整行,如Apples,5
。因此,请尝试用逗号将其分割并存储到变量中。
String arr[] = a.split(",");
String name = arr[0];
int number = Integer.parseInt(arr[1]);
或者如果价格不是整数,则
double number = Double.parseDouble(arr[1]);
答案 1 :(得分:1)
使用Java 8流和改进的文件读取功能,您可以按照以下步骤进行操作。它将项目和计数作为键值对存储在地图中。之后很容易通过密钥访问。
我知道这可能太先进了,但是最终这将在以后了解Java新知识时为您提供帮助。
try (Stream<String> stream = Files.lines(Paths.get("src/test/resources/items.txt"))) {
Map<String, Integer> itemMap = stream.map(s -> s.split(","))
.collect(toMap(a -> a[0], a -> Integer.valueOf(a[1])));
System.out.println(itemMap);
} catch (IOException e) {
e.printStackTrace();
}
输出
{Apples=5, Kiwi=3, Bananas=4, Strawberry=8}
答案 2 :(得分:0)
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader(
"C://Test/myfile.txt")); //Your file location
String line = reader.readLine(); //reading the line
while(line!=null){
if(line!=null && line.contains(",")){
String[] data = line.split(",");
System.out.println("Fruit:: "+data[0]+" Count:: "+Integer.parseInt(data[1]));
}
//going over to next line
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 3 :(得分:0)
您可以通过调用useDelimiter方法为扫描仪指定定界符,例如:
public static void main(String[] args) {
String str = "Bananas,4\n" + "Apples,5\n" + "Strawberry,8\n";
try (Scanner sc = new Scanner(str).useDelimiter(",|\n")) {
while (sc.hasNext()) {
String fruit = sc.next();
int price = sc.nextInt();
System.out.printf("%s,%d\n", fruit, price);
}
} catch (Exception e) {
e.printStackTrace(System.out);
}
}