Есть файл.txt примерно следующего содержания:
Дверь Окно Лестница
1000 1200 2700
3 5 13
Нужно считать файл и сохранить в массив 3 объекта с параметрами, взятыми из файла. Что-то вроде
Object ob = new Object(Name, Cost, Num);
array.add(ob);
Но никак не могу сообразить как распарить файл так, что бы правильно создать объект. Может быть кто подскажет? Значения в строке разделены пробелом, строки - знаком конца строки ("\n"
). Буду рад помощи
Считывание файла идёт построчно, т.е в 1-ой строке считываешь Stringи и кидаешь их в соответствуещее поле в своих объектах, потом так же и с остальными строками
Попробуйте так:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class AppFile {
public static void main(String[] args) {
Map<Integer, ObjectTest> map = new HashMap<>();
try (Scanner scanner =
new Scanner(AppFile.class.getResourceAsStream("/file.txt"))
) {
int lineNumber = 1;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] source = line.split(" ");
for (int i = 0; i < source.length; i++) {
ObjectTest objectTest;
if (map.containsKey(i)) {
objectTest = map.get(i);
} else {
objectTest = new ObjectTest();
}
switch (lineNumber) {
case 1:
objectTest.setName(source[i]);
break;
case 2:
objectTest.setCost(source[i]);
break;
case 3:
objectTest.setNum(source[i]);
break;
}
map.put(i, objectTest);
}
lineNumber++;
}
}
map.forEach((i, o) -> {
System.out.printf("number: %s object name: %s\n", i, o.getName());
});
}
}
class ObjectTest {
private String name;
private String cost;
private String num;
public ObjectTest(String name, String cost, String num) {
this.name = name;
this.cost = cost;
this.num = num;
}
public ObjectTest() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCost() {
return cost;
}
public void setCost(String cost) {
this.cost = cost;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
}
Вывод:
number: 0 object name: Дверь
number: 1 object name: Окно
number: 2 object name: Лестница
ArrayList<String> words = new ArrayList<>();
String[] wordsArr = null;
try{
BufferedReader in = new BufferedReader(new FileReader("D:\\testout.txt"));
String line = null;
while(true){
line = in.readLine();
if(line == null){break;}
else{
wordsArr = line.split("\t");
for(String x: wordsArr){
if(!"".equals(x)){
words.add(x);
}
}
}
}
in.close();
} catch(Exception x) {
System.out.println(x);
}
String[] names = null;
String[] costs = null;
String[] nums = null;
for(int i=0;i<1; i++){
String lineOne = words.get(i);
names = lineOne.split(" ");
}
for(int i=0;i<2; i++){
String lineOne = words.get(i);
costs = lineOne.split(" ");
}
for(int i=0;i<3; i++){
String lineOne = words.get(i);
nums = lineOne.split(" ");
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я хочу сделать программу под андроид в Android Studio, но когда пытаюсь пробно собрать свой первый проект (пока без кода), то Android Studio ругается на отсутствие...
Хочу приступить к изучению библиотеки, связанной с дополненной реальностью (AR) на AndroidВроде приглянулась EasyAR (даже смог подключить, еее)