【发布时间】:2014-11-07 21:37:35
【问题描述】:
为一个类处理 Java 项目。教授希望我们输出到一个文件,这是我以前从未做过的。
指示:
创建 program1.states.in.out 并在提交项目时将其包含在项目文件夹中。
此文件不会像第 3 步中显示的输出那样出现。它仅包含
未格式化的数据行(没有间隔;没有标题……)。那么,输出文件将包含 50
仅数据线。在第 6 步中,您将需要这个创建的副本再次输入。所以
确保其格式正确。它看起来像:
Texas Austin TX19759614Southwest 5
New_Mexico Santa_Fe NM 1736931Southwest 5
Arizona Phoenix AZ 4668631Southwest 5
这看起来与他的输入文件中的结构相同。但是我已经对其进行了修剪/解析以填充 State 数组。我如何将其恢复为这种格式,然后将其输出到文件中?
用于从输入文件中修剪/解析的代码(在主文件中):
inputString = br1.readLine();
while (inputString != null) {
stateName = inputString.substring(0, 15).trim();
stateCapital = inputString.substring(15, 30).trim();
stateAbbrev = inputString.substring(30, 32).trim();
statePop = Integer.parseInt(inputString.substring(32, 40).trim());
stateRegion = inputString.substring(40, 55).trim();
stateRegionNum = Integer.parseInt(inputString.substring(55));
Sdriver.insert(stateName, stateCapital, stateAbbrev, statePop, stateRegion, stateRegionNum);
inputString = br1.readLine(); // read next input line.
}
br1.close(); //Close input file being read
这就是 State.class。
public class State {
private String stateName;
private String stateCapital;
private String stateAbbrev;
private int statePop;
private String stateRegion;
private int stateRegionNum;
public static final String HEADER_STRING = "\n%-15s %-15s %-4s %-10s %-15s %-8s\n\n";
private static final String DISPLAY_STRING = "%-15s %-15s %-4s %,10d %-15s %1d";
public State(String name, String capital, String abbrev, int pop, String region, int regionNum) {
stateName = name;
stateCapital = capital;
stateAbbrev = abbrev;
statePop = pop;
stateRegion = region;
stateRegionNum = regionNum;
}//End State
public void displayState(int nElems, State myState[]) {
System.out.print(String.format(State.HEADER_STRING, "State", "Capital", "Abbr", "Population", "Region", "Region #"));
for(int x = 0; x < nElems - 1; x++) {
System.out.println(myState[x].toString());
}
}//End displayState
编辑:我尝试输出的代码。
String file = "src/program1.states.in.out.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter("src/program1.states.in.out.txt")); {
for(int x = 0; x < Sdriver.getnElems(); x++) {
writer.write(Sdriver.getState(x).toString());
}
}
创建了一个文件,但该文件是空的。
【问题讨论】:
-
您的输入读数对我来说似乎太复杂了。我自己,我只是用
"\s+"之类的东西分割每一行。对于输出,您将使用 displayState 方法创建要写入文件的字符串。在寻求我们的帮助之前,您应该先自己尝试一下。 -
这个问题似乎是题外话,因为你还没有发布你首先解决这个问题的尝试,如果我们要看看你可能做错了什么,这是必要的。
-
谢谢。如果你将 BufferedWriter 包装在一个 PrintWriter 对象中,比如说 printWriter,然后简单地将 for 循环的内部部分更改为
printWriter.println(Sdriver.getState(x).displayState());? -
我需要传递一个 int 和 State[]。但它不会接受 nElems 或 myState,因为这些变量位于另一个类 StateCollection 中。
-
这些是您必须自己解决的细节。您必须将引用从一个类传递到另一个类,但我相信您会弄清楚如何做到这一点。
标签: java arrays netbeans java-io