私は州をソートしていますが、メインクラスをそのまま残しておき、Mungeというプライベートクラスを作る必要があります。時間、この時になって、時代の私のコードの数百人を変更し、基本的にはこの問題ファイルから読み込み、2D配列を使用してデータを並べ替える
のように見えるテキストファイルハミルトン、オンタリオ州
トロント、オンタリオ州
エドモントン、アルバータ州
レッドディア、アルバータ州からの読み込み
セントジョンズ、ニューファンドランド
この
アルバータ等出力する必要があります。エドモントン、レッドディア
オンタリオ;ハミルトン、トロント
ニューファンドランド;セントジョンズ
私のメインクラスは不変であり、この
public class Lab5 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if(args.length < 2) {
System.err.println("Usage: java -jar lab5.jar infile outfile");
System.exit(99);
}
Munge dataSorter = new Munge(args[0], args[1]);
dataSorter.openFiles();
dataSorter.readRecords();
dataSorter.writeRecords();
dataSorter.closeFiles();
}
}
と私が作ったのmungeクラスを使用すると、言い訳する必要があります。この
package lab5;
import java.io.File;
import java.util.Scanner;
import java.util.Formatter;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
public class Munge
{
private String inFileName, outFileName;
private Scanner inFile;
private Formatter outFile;
private int line = 0;
private String[] data;
public Munge(String inFileName, String outFileName)
{
this.inFileName = inFileName;
this.outFileName = outFileName;
data = new String[100];
}
public void openFiles()
{
try
{
inFile = new Scanner(new File(inFileName));
File file = new File("input.txt");
SortedMap<String, List<String>> map = new TreeMap<String, List<String>>();
Scanner scanner = new Scanner(file).useDelimiter("\\n");
while (scanner.hasNext()) {
String newline = scanner.next();
if (newline.contains(",")) {
String[] parts = newline.split(",");
String city = parts[0].trim();
String province = parts[1].trim();
List<String> cities = map.get(province);
if (cities == null) {
cities = new ArrayList<String>();
map.put(province, cities);
}
if (!cities.contains(city)) {
cities.add(city);
}
}
}
for (String province : map.keySet()) {
StringBuilder sb = new StringBuilder();
sb.append(province).append(": ");
List<String> cities = map.get(province);
for (String city : cities) {
sb.append(city).append(", ");
}
sb.delete(sb.length() - 2, sb.length());
String output = sb.toString();
System.out.println(output);
}
}
catch(FileNotFoundException exception)
{
System.err.println("File not found.");
System.exit(1);
}
catch(SecurityException exception)
{
System.err.println("You do not have access to this file.");
System.exit(1);
}
try
{
outFile = new Formatter(outFileName);
}
catch(FileNotFoundException exception)
{
System.err.println("File not found.");
System.exit(1);
}
catch(SecurityException exception)
{
System.err.println("You do not have access to this file.");
System.exit(1);
}
}
public void readRecords()
{
while(inFile.hasNext())
{
data[line] = inFile.nextLine();
System.out.println(data[line]);
line++;
}
}
public void writeRecords()
{
for(int i = 0; i < line; i++)
{
String tokens[] = data[i].split(", ");
Arrays.sort(tokens);
for(int j = 0; j < tokens.length; j++)
outFile.format("%s\r\n", tokens[j]);
}
}
public void closeFiles()
{
if(inFile != null)
inFile.close();
if(outFile != null)
outFile.close();
}
}
のように見えるようになります。私の括弧は、netbeansで正しくフォーマットされましたが、私はコードブロックに保持するために下のものを移動しなければならなかった
これは宿題のように聞こえるので、私はそのタグを付け加えました。 –
これまでのソリューションで直面している特定の問題に基づいて、特定の質問をする必要があります。あなたはいくつかのコードを書いていますが、それがどのように機能していないのかについては何の示唆もしていません。私はあなたのコードが動作していないと思うが、あなたは本当に質問していない。 – digitaljoel