2017-06-18 6 views
-3

新適切なフォーマットを出力付:のJavaヘルプ - そう、まだ基本的な側面を把握し、これまでのところ、これを書くことができたプログラミングに

public static void main(String[] args) throws FileNotFoundException { 
    Scanner sc = new Scanner(new File("Path://pay.txt")); 

    String name; 
    int price; 
    int quantity; 
    int total; 

    while(sc.hasNext()){ 
     name = sc.next(); 
     price = sc.nextInt(); 
     quantity = sc.nextInt(); 

     total = price * quantity; 


     System.out.println(name + " : " + total); 
    } 
    sc.close(); 

} 

出力:

Emma : $16 
Sofia : $8 
Olivia : $70 
Emma : $9 
Emma : $9 
Emma : $4 
Emma : $120 
Sofia : $33 
Emma : $78 
Emma : $40 
Sofia : $32 
Olivia : $8 
Sofia : $6 
Olivia : $36 
Emma : $9 
Emma : $45 
Emma : $54 
Emma : $12 
Emma : $78 
Emma : $36 
Olivia : $4 
Emma : $64 
Sofia : $42 
BUILD SUCCESSFUL (total time: 1 second) 

の代わりに私のアウトプットはそれを見て、各ラインの個々の合計売上高を表示すると、私は各人の合計売上高を出力したいと思います....

Income 
    Emma: $xx 
    Sofia: $yy 
    Olivia: $zz 

誰でも私を助けて正しい方向に私を導くことができますか?私は近いと思うが、100%確実ではない。

この投稿を読んでいただきありがとうございます。

+0

「HashMap 」を使用するか、Stringとdoubleを保持するクラスを作成し、このタイプのArrayListを作成します。いずれにしても、値を集めて合計し、最後にすべて印刷する必要があります。私はどちらかに役立つストリーミングハッキングがあると推測しています。 –

+0

"私は近くにいるように感じますが、100%確実ではありません。" - あなたが考えるべきものを試してください。それがうまくいかない場合は、より具体的な質問に戻ってください。 –

+0

...いいえ、あなたはまだそこにいません。 –

答えて

0

名前のArrayListと合計の別のArrayListを作成します。 ユーザーから新しい入力を受け取ったら、最初は両方のarraylistsが空です。arraylistに名前を追加し、合計をarraylistに追加します。 その後入力が入力されるたびに、名前がarraylistに存在するかどうかチェックします。追加しない場合は、インデックスを取得し、そのインデックスをtotal arraylistで使用して番号を取得します新しい値を追加します。すべての値が入力されたら、arraylistsをループして印刷します。

Scanner sc = new Scanner(new File("Path://pay.txt")); 
    ArrayList<String> names = new ArrayList<String>(); 
    ArrayList<Integer> total = new ArrayList<Integer>(); 

    String name; 
    int price; 
    int quantity; 


    while(sc.hasNext()){ 
     name = sc.next(); 

     price = sc.nextInt(); 
     quantity = sc.nextInt(); 

     if(names.contains(name)){ 
      int index = names.indexOf(name); 
      int totalTemp = total.get(index); 
      totalTemp += price * quantity; 
      total.remove(index); 
      total.add(totalTemp,index); 
     }else{ 
      names.add(name); 
      total.add(price*quantity); 
     } 
    } 
    sc.close(); 
    for(int i=0;i<names.size();i++){ 
    System.out.println(names.get(i)+": "+total.get(i)); 
+0

また、他の人が触れたようにHashMapを使用することもできます。 –

+0

パラレルリスト?ああ。 –

関連する問題