Новичок в java здесь. Я пытаюсь разбить строку на переменные в объекте. Как сказано в заголовке, последнее поле в строке разделяется вместе с первым полем.
Строка из моего txt файла, все остальные строки идентичны.
Вот результат:
Rolling Stone#Jann Wenner#Bi-Weekly#Boston#9000
Rolling Stone#Jann Wenner#Bi-Weekly#Philadelphia#8000
Rolling Stone#Jann Wenner#Bi-Weekly#London#10000
The Economist#John Micklethwait#Weekly#New York#42000
The Economist#John Micklethwait#Weekly#Washington#29000
Nature#Philip Campbell#Weekly#Pittsburg#4000
Nature#Philip Campbell#Weekly#Berlin#6000
Exception in thread "main" java.lang.NumberFormatException: For input string: "9000 Rolling Stone"
9000 должно быть целым числом. И последний индекс переходит на следующую строку, потому что # там нет, что мне делать?
Я считаю, что этого кода достаточно
static ArrayList<String> al = new ArrayList<String>(); // Consists of lines of the text file
static ArrayList<Magazine> bl = new ArrayList<Magazine>(); // Consists of Magazine objects
for (int i = 0; i < al.size(); i++) {
String result[] = al.get(i).split("\\#");
for (int j = 0; j < result.length; j++) {
System.out.println(result[0] + "1 " + result[1] + "2 " + result[2] + "3 " + result[3] + "4 "+ result[4]);
int num = Integer.parseInt(result[4]);
У меня есть паучье чутье где-то рядом ("\ #"), но я не знаю что ...
Pastebin: http://pastebin.com/Vp9T6aSd
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class Magazine {
private String MagazineName;
private String Publisher;
private String Frequency;
private String City;
private String objectName = "mg" + loopCount;
private int Distribution;
private static int loopCount = 0;
static ArrayList<String> al = new ArrayList<String>(); // Consists of lines of the text file
static ArrayList<Magazine> bl = new ArrayList<Magazine>(); // Consists of Magazine objects
private static void readData() throws FileNotFoundException {
java.io.File file = new java.io.File(
"/Users/henrydang/Desktop/Zines.txt");
Scanner sc = new Scanner(file);
while (sc.hasNext()) {
sc.useDelimiter("\\n");
String line = sc.next();
System.out.println(line);
al.add(line);
Magazine objectName;
for (int i = 0; i < al.size(); i++) {
String result[] = al.get(i).split("#");
for (int j = 0; j < result.length; j++) {
System.out.println(result[0] + "1 " + result[1] + "2 " + result[2] + "3 " + result[3] + "4 "+ result[4]);
int num = Integer.parseInt(result[4]);
objectName = new Magazine();
objectName.setMagazine(result[0]);
objectName.setPublisher(result[1]);
objectName.setFrequency(result[2]);
objectName.setCity(result[3]);
objectName.setDistribution(num);
bl.add(objectName);
}
}
loopCount++;
sc.close();
}
}
public Magazine() {
}
public void setMagazine(String name) {
this.MagazineName = name;
}
public void setPublisher(String name) {
this.Publisher = name;
}
public void setFrequency(String name) {
this.Frequency = name;
}
public void setCity(String name) {
this.City = name;
}
public void setDistribution(int num) {
this.Distribution = num;
}
public String getMagazine() {
return MagazineName;
}
public String getPublisher() {
return Publisher;
}
public String getFrequency() {
return Frequency;
}
public String getCity() {
return City;
}
public int getDistribution() {
return Distribution;
}
public static void main(String args[]) throws FileNotFoundException {
readData();
}
}
РЕДАКТИРОВАТЬ: больше информации РЕШЕНО: текстовый файл заканчивался на / r / n вместо «/ n»
j
? Это кажется лишним. - person Peter Lawrey   schedule 13.01.2013System.out.println(al.get(i))
в свой код. Я уверен, что вы включили текст из строки ниже - person Boris Strandjev   schedule 13.01.2013al.get(i)
- person Boris Strandjev   schedule 13.01.2013sc.useDelimiter("\\n");
Наверное, лучше заменить"\\n"
наSystem.getProperty("line.separator")
. - person Andrew Thompson   schedule 13.01.2013al.get(i)
или вашего файлаZines.txt
(как-то вложения) наверняка решит проблему. - person Sanchit   schedule 13.01.2013\n
), либо выводal.get(i)
- person Sanchit   schedule 13.01.2013sc.hasNextLine
иsc.nextLine
и посмотрите, решит ли это вашу проблему - person RonK   schedule 13.01.2013\r\n
и\n
. Позвольте мне ответить вам, чтобы ваш процент не упал. - person Sanchit   schedule 13.01.2013