Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

<以下の条件のものを抽出,カウントする方法>

エクセルのA列に氏名,B列にその人がある期間中に利用した交通機関があるとします.

●1種類の交通機関しか利用していない人を返すにはどうしたらよいでしょうか.

データ例

A   B
氏名 交通機関
a   自転車
a   バス
b   自転車
b   自転車
b   バス
b   バス
c   鉄道
c   鉄道
c   鉄道
d   自転車
d   自転車
d   自転車
d   自転車
d   自転車
e   バス
e   バス
e   バス
f   鉄道
f   バス

上の例の場合
○aさんは自転車とバスの2種類以上でOK
○bさんも自転車とバスの2種類以上でOK
○cさんは鉄道しか利用しておらず1種類だから抽出
○dさんも自転車しか利用しておらず1種類だから抽出
○eさんもバスしか利用しておらず1種類だから抽出
○fさんは鉄道とバスの2種類以上でOK
という風にしたいのです.

java初心者です.大変困っています.
どなたかご教授願います.

12

回答

81872

閲覧

12件の回答

評価

0

ガイドラインを読みましたか?

何を聞きたいのでしょうか?
何に困っていますか?

問題を丸投げしても、あなたの代わりにコーディングしてくれる心優しい暇人はいないです。
だって、あなたが単位を落としても得にも損にもならないから。
ここに解答しても、あなたのためにならないから。

評価

0

>だって、あなたが単位を落としても得にも損にもならないから。

そうでもないのでは。
コピペで単位をそろえたようなヤツが、
業界に滑り込んできた日には・・・

評価

0

申し訳ありません.
以下は途中(?)まで書いたものですが,これでは意図したものとなっていません.

import java.io.*;    // データの読み込みで使う呪文
import java.util.*;    // データの分割(StringTokenizer)に必要
public class 期間中ずっと同じ交通機関の人 {

    public static void main(String[] args) {
        //データ例の自転車を1,バスを2,鉄道を3とした
        //カウント用
        int bicycle_count=0;
        int bus_count=0;
        int rail_count=0;
        //一行目の人aさんから
        String kojin = "a";
        try{
            BufferedReader fin = new BufferedReader(new FileReader("same_trip.csv"));
            String ss;
            fin.readLine();
            while((ss=fin.readLine())!=null){
                StringTokenizer st = new StringTokenizer(ss, ",");
                String shimei =  st.nextToken();  //氏名
                String trans =  st.nextToken();  //交通機関
                //計算開始
                
                if (kojin.equals(shimei)) {
                }
                else{
                    if(trans.equals(1)) {
                        bicycle_count++;
                    }
                    if(trans.equals(2)) {
                        bus_count++;
                    }
                    if(trans.equals(3)) {
                        rail_count++;
                        }
                }
                kojin = shimei;

            }
            System.out.println("自転車="+bicycle_count);
            System.out.println("バス="+bus_count);
            System.out.println("鉄道="+rail_count);
                
        }
        catch (Exception e) {
            System.out.println("エラー:"+e);}
    }

}

評価

0

>java初心者です.大変困っています.
初心者ですってのは、それだけで回答する人を減らす力を持ってる。
逆に教えたくなる人もいるけどね。
使わないほうがいいよ。

で、困ってるのも分かるが、だからと言って答えを期待するのではな
く、もう少し自分で考えてみよう。

今のコードは、一人の分しかカウントできない。
じゃあ複数の人をカウントするにはどうしたらいいか。

できてないところを考えて、それに対してどうすればいいかを、考え
てみる。
全体として「できてない」じゃなくて、ポイントを考えるんだよ。


それと、ファイルを「開いた」ら「閉じる」癖も付けよう。

評価

0

kojin = shimei;
のところで,次の人にいってほしんですけど…
う〜ん・・・
以下改善しました.まだ途中です.アドバイス等お願いします.

import java.io.*;    // データの読み込みで使う呪文
import java.util.*;    // データの分割(StringTokenizer)に必要
public class 期間中ずっと同じ交通機関の人 {
    public static void main(String[] args) {
        //自転車を1,バスを2,鉄道を3とした
        //カウント用
        int bicycle_count=0;
        int bus_count=0;
        int rail_count=0;
        //一行目の人aさんから
        String kojin = "a";
        try{
            BufferedReader fin = new BufferedReader(new FileReader("test_same_trans.csv"));
            String ss;
            fin.readLine();
            while((ss=fin.readLine())!=null){
                StringTokenizer st = new StringTokenizer(ss, ",");
                String shimei =  st.nextToken();  //氏名
                int trans = Integer.parseInt(st.nextToken());//交通機関
                //計算開始
                if (kojin.equals(shimei)) {
                }
                else{
                    if(trans ==1) {
                        bicycle_count++;
                    }
                    if(trans ==2) {
                        bus_count++;
                    }
                    if(trans ==3) {
                        rail_count++;
                    }
                }
                kojin = shimei;
                
            }
            System.out.println("自転車="+bicycle_count);
            System.out.println("バス="+bus_count);
            System.out.println("鉄道="+rail_count);
                
        }
        catch (Exception e) {
            System.out.println("エラー:"+e);}
    }

}

***test_same_trans.csv******
氏名    交通機関
a    1
a    2
b    1
b    1
b    2
b    2
c    3
c    3
c    3
d    1
d    1
d    1
d    1
d    1
e    2
e    2
e    2
f    3
f    2

評価

0

ああ、ソートされてることは期待していいのね。
いろいろ読み違えてたみたいだ。

で、「何が足りないの?」これがアドバイスだな。
今のままじゃ、代わりに書いてと言ってるように読める。

if文は知ってるようだから、お題はクリアできそうに思うけどなあ。

評価

0

「だいたい」できてそうな気がしますね。

・何ができて(改善したってあるけど…?)
・何ができてない

が、まだエスパー質問ですね。

$さんの
>それと、ファイルを「開いた」ら「閉じる」癖も付けよう。
コレもやりましょうね・・・。

>コピペで単位をそろえたようなヤツが、
>業界に滑り込んできた日には・・・
少なくとも自分の周りではそういう人は1年以内に業界から消えてますね。

評価

0

コメントありがとうございます.
エクセルの「重複を削除」と「ピポットテーブル」で解決しました.

評価

0

をいをい、それをJavaでやるのが課題じゃないの?

評価

0

私は情報系の学生などではありません.ただエクセルの処理で困っていたので,javaに詳しい方に教えを請おうと思っただけです.そういう場ではないのならお詫びします.失礼しました.

評価

0

その解決方法は最善。

が、結局ガイドラインを読まずに進めていたのが最悪だね。
読んでいれば、
「そういう場ではないのなら」なんて言えるはずがない。

評価

0

Excelの機能で解決したはいいけど、Javaでも解決してみようとは思わないのでしょうか。
ここまで教えて頂いて失礼ですし、なにより勿体無いと思いますけど。
学生じゃない・・・社会人?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。