ファイルを読み込み、データを処理し、それを出力するプロジェクトのために、Java で 2 次元配列を作成しました。私が抱えている唯一の問題は、2次元配列をアルファベット順にソートしようとすることです。
これは、ファイル入力の例です。
2011 Regular Season
Boston 162 5710 875 1600 352 35 203
NY_Yankees 162 5518 867 1452 267 33 222
Texas 162 5659 855 1599 310 32 210
Detroit 162 5563 787 1540 297 34 169
St.Louis 162 5532 762 1513 308 22 162
Toronto 162 5559 743 1384 285 34 186
Cincinnati 162 5612 735 1438 264 19 183
Colorado 162 5544 735 1429 274 40 163
Arizona 162 5421 731 1357 293 37 172
Kansas_City 162 5672 730 1560 325 41 129
そして、これは出力がどのように見えるかの例です:
2011 Regular Season
====================
Boston: .280 .461
NY_Yankees: .263 .444
Texas: .283 .460
Detroit: .277 .434
St.Louis: .273 .425
Toronto: .249 .413
Cincinnati: .256 .408
Colorado: .258 .410
Arizona: .250 .413
Kansas_City:.275 .415
====================
Big Ten Av: .266 .428
私の目標は、チーム名をアルファベット順に並べ替えることです。Array.sort() メソッドと Comparator を使用してみましたが、何も機能しませんでした。私が今持っている作業コードを含めます。どんな助けも素晴らしいでしょう!
package problem_1;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Comparator;
public class sluggers2 {
static String specificstat[][] = new String[1000][1000]; //Create a 2-dimensional array with limits of 1000
static DecimalFormat df = new DecimalFormat(".###");//Variable to round the integers to 3 decimal places
public static void main(String args[]) { //Main method
execute(); //Call on the function "execute" and execute it
baseballstats(1);
}
public static String[][] execute() {
int line = 0;
try {
BufferedReader in = new BufferedReader(new FileReader("stuff/input_sluggers.txt"));
String str;
while ((str = in.readLine()) != null) {
if (str.trim().length() == 0) {
continue; // Skip blank lines
}
specificstat[line] = str.split(" ");
line++;
}
in.close();
} catch (IOException e) {
System.out.println("Can not open or write to the file.");
}
return specificstat;
}
public static void baseballstats(int teamnumber) {
double batting_average, slugging_average = batting_average = 0;
//Arrays.sort(specificstat[0]);
//Tried sorting the first dimension but it didn't work
System.out.println(specificstat[0][0] + " " + specificstat[0][1] + " " + specificstat[0][2]);
System.out.println("====================");
while (teamnumber <= 10) {
double B = Integer.parseInt(specificstat[teamnumber][5]);
double C = Integer.parseInt(specificstat[teamnumber][6]);
double D = Integer.parseInt(specificstat[teamnumber][7]);
double A = Integer.parseInt(specificstat[teamnumber][4]) - (B + C + D);
double slug_avg = ((A + 2*B + 3*C + 4*D) / Integer.parseInt(specificstat[teamnumber][2]));
double y = Integer.parseInt(specificstat[teamnumber][4]), z = Integer.parseInt(specificstat[teamnumber][2]), bat_avg = y / z;
slugging_average = slugging_average + slug_avg;
batting_average = batting_average + bat_avg;
double hits = Integer.parseInt(specificstat[teamnumber][4]);
double at_bats = Integer.parseInt(specificstat[teamnumber][2]);
String batting = df.format(hits / at_bats), slugging = df.format(slug_avg);
if (slugging.length() == 3)
slugging = slugging + "0";
if (batting.length() == 3)
batting = batting + "0";
System.out.println(specificstat[teamnumber][0] + ": " + "\t" + batting + " " + slugging);
teamnumber++;
}
String big_ten_av = "\t" + df.format(batting_average / 10) + " "+ df.format(slugging_average / 10);
System.out.println("====================");
System.out.print("Big Ten Av: "); System.out.print(big_ten_av);
}
}
私はコーディングに比較的慣れていないので、どんな助けでも大歓迎です。