ここで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]);
私はどこか近いスプリット( "\#")でスパイダーセンスを持っていますが、何がわかりません...
ペーストビン: 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();
}
}
編集: 詳細情報 解決済み: テキスト ファイルの末尾が "/n" ではなく /r/n である