
今、
a 001 1
a 002 1
b 002 2
b 003 2
c 001 2
c 002 4
c 004 3
d 003 2
d 005 1
e 006 4
このように並んでいる表を
001 002 003 004 005 006
a 1 1 0 0 0 0
b 0 2 2 0 0 0
c 2 4 0 3 0 0
d 0 0 2 0 1 0
e 0 0 0 0 0 4
というような表に書き換えたいのですが、
何かいい方法はないでしょうか?
データ数が膨大なので、EXCELなどでやるわけにもいかず困っています。
javaでプログラムを組もうと思っているのですが、
具体的にどのようにすればいいものでしょうか?
No.3ベストアンサー
- 回答日時:
a 001 1
というデータの、"a"の部分をY座標に。"001"の部分をX座標に変換できる関数を作れば、配列として扱えるようになるので、後は楽だと思います。
データの仕様が書かれていないので、適当に想像して書いてみました。
表の大きさ(X,Yの最大値)が決まっていれば、サンプルのように配列でいいですが、これが未定の場合は、Mapなどを使うと良いと思います。
static String[] lines = {
"a 001 1",
"a 002 1",
~中略~
"e 006 4",
};
public static void main(String[] args){
int [][] values = new int[10][10]; //ここでは、10x10の表とする
//読み込んだデータを1つずつ処理する
for (int i = 0; i < lines.length; i++){
String[] elements = lines[i].split(" "); //スペースで分割
int x = getX(elements[1]);
int y = getY(elements[0]);
values[y][x] = Integer.parseInt(elements[2]); //数値化
}
//valuesの中身を確認
for (int y = 0; y < values.length; y++){
for (int x = 0; x < values[y].length; x++){
System.out.print(values[y][x] + ",");
}
System.out.println();
}
}
private static int getY(String s){
return (int)(s.charAt(0) - 'a'); //a->0, b->1, c->2に変換
}
private static int getX(String s){
String temp = s.replaceAll("^[0]+", ""); //先頭の0を除去
return Integer.parseInt(temp) - 1; //数値化して-1する
}
No.4
- 回答日時:
試しに作ってみました。
適宜状況に合わせて変更して下さい。
----------------------------------------------------------------
import java.io.*;
import java.util.*;
class Convert {
public static void main(String args[]){
Scanner sc = null;
TreeSet<String> tsn = new TreeSet<String>();
TreeSet<String> tsi = new TreeSet<String>();
TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
String inName="";
String inIndex="";
int inNum=0;
try{
sc = new Scanner(new File("data.txt"));
while(sc.hasNext()){
inName = sc.next();
tsn.add(inName);
inIndex = sc.next();
tsi.add(inIndex);
inNum = sc.nextInt();
tm.put(inName+":"+inIndex, inNum);
}
sc.close();
}
catch(FileNotFoundException e){
System.out.println("ファイルが無い:" + e);
}
catch(InputMismatchException e){
System.out.println("データ不良:" + e);
}
for(String index : tsi){
System.out.print(" " + index);
}
System.out.println();
for(String s : tsn){
System.out.print(s);
for(String i : tsi){
System.out.print(" " + ((tm.get(s+":"+i)==null)? 0 : tm.get(s+":"+i)));
}
System.out.println();
}
}
}
No.2に加え、プログラムを組んでいただき本当にありがとうございました。
勉強不足でまだわからないところもあるのですが、
ぜひぜひ参考にさせていただきます。
本当にありがとうございました。
No.2
- 回答日時:
Mapを使ってできるんじゃないかな。
もし、データ数が大きすぎて処理できないのであれば、
最初にa,b,c…のような処理リストを作って、
aだけを処理して出力
bだけを処理して追加出力みたいな感じでいいんでないでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセル】並び替えからの並び替え方法 7 2022/07/22 09:46
- Excel(エクセル) Excelの並び替え(先頭の文字以外を基準に並び替えたい) 3 2023/07/07 22:21
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Excel(エクセル) Googleスプレッドシートの割合の関数と円グラフの並べ替えについて 1 2022/07/22 17:31
- Excel(エクセル) Excel 行 について 写真のように日付が並んでおり、何年何月何日以前は行削除。といったマクロ等組 2 2023/02/20 12:55
- Visual Basic(VBA) Excelで横書き50行の漢字テストデータを縦書きのテスト問題にしたい。 6 2022/04/27 15:03
- Excel(エクセル) 棚卸表の前月比の関数等あれば教えてください 2 2023/05/02 18:34
- その他(Microsoft Office) PCを買い換えました。 今使っているノートパソコンが10年以上使っており新しく買い換えました。Win 5 2023/03/26 00:18
- Excel(エクセル) Excelで日付のグラフへの表示 2 2022/04/15 11:04
- Excel(エクセル) Excelで作成しているシート(表) 5 2023/06/15 10:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データの並び替え
-
ループ処理の際、最後だけ","を...
-
continue文以外で・・・
-
forループである条件に達したら...
-
配列を逆順させて表示させる方...
-
論理演算子”||”またはの入力方法
-
Java、2の0乗~10乗の表示
-
JAVAプログラミング
-
数値⇒漢数字変換 java
-
2つのスクロールバーを連動させ...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
Ctrl+Zが入力されると終了する...
-
java キーボード入力された値の...
-
java 入力 3 4 3 出力 ABC DEFG...
-
入力データ数を入力して、その...
-
countに実行した回数をいれたい...
-
複数の数字を計算
-
エラー(互換性の無い型)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
java キーボード入力された値の...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
javaプログラムについて
-
JAVAのfor文で困っています。
-
繰り返しによる星印の出力
-
Java 配列<選挙>
-
javaです。 途中まで出来ている...
-
数値⇒漢数字変換 java
-
Ctrl+Zが入力されると終了する...
-
java 入力 3 4 3 出力 ABC DEFG...
-
エラー(互換性の無い型)
-
Java 入力した整数値の合計を、...
-
【JAVA <identifier>がありま...
-
2つのスクロールバーを連動させ...
おすすめ情報