0

質問は :

果物屋では、毎日数種類の果物を販売しています。ユーザーから数行の入力を読み取るプログラムを作成します。各行には、果物の名前、1 キログラムあたりの価格 (整数)、販売されたキログラム数 (整数) が含まれます。

プログラムは、販売されたすべての果物と最大の利益を達成した果物の収益を計算して出力する必要があります。

ヒント: -ユーザーが有効なデータを挿入すると想定できます -ユーザーは果物の名前として「停止」という単語を入力してプログラムを停止できます。

入力と出力の例:

各行に、果物の名前、1 キログラムあたりの価格、販売されたキログラム数を挿入します。プログラムを停止するには、果物の名前として「停止」を挿入します


バナナ 2 11 マンゴー 3 8 ピーチ 4 5

止まる


販売されたすべての果物の獲得金額: 66 個の最大の利益を達成した果物: マンゴー


私が今書いたこと:

public static void main(String[] args) { 
// TODO code application logic here 
Scanner input = new Scanner (System.in); 
String fruitname= " "; 
String maxfruit = " "; 
int price = 0,number=0; 
int sum=0; 
int max=0; 


System.out.print("Fruit name, " + "price in killogram, number of killogram sold: "); 

while (!fruitname.equals("stop")) 
{ 
fruitname = input.next(); 
price = input.nextInt(); 
number = input.nextInt(); 
} 
if (fruitname.equals("stop")) 
{ 
sum = sum+(price*number); 

} 
if (max<(price*number)) 
{ 
max = price*number; 
maxfruit = fruitname; 
} 


System.out.println("the earned money of all fruits is " + sum); 
System.out.println("fruit that achieved the largest profit is "+ maxfruit); 
} 
} 

プログラムは私が提出したものを読んでいません。理由がわからず、合計と最大の果物が得られません..私が書いたものの問題は何ですか?

4

5 に答える 5

1

ご覧のとおり、読み取りはwhileループで行われます。

while (!fruitname.equals("stop")) 
{ 
    fruitname = input.next(); 
    price = input.nextInt(); 
    number = input.nextInt(); 
} 

ループするたびに、値が上書きされます。最後に、停止を読んでループを終了すると、fruitname停止ます。したがって、入力をどのように読み取りたいかについてロジックを修正する必要があります

于 2013-11-13T21:15:06.537 に答える
0
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class FruitSells {
    public static void main(String... args) {
        BufferedReader bufer = new BufferedReader(new InputStreamReader(System.in));
        try {
            String str;
            String[] inarr;
            int sumMoney = 0;
            do {
                str = (String) bufer.readLine();
                inarr = str.split(" ");
                for(int i = 1; i < inarr.length; i += 3) {
                    sumMoney += Integer.parseInt(inarr[i]) * Integer.parseInt(inarr[i + 1]);
                }
                System.out.println(sumMoney);
                sumMoney = 0;
            } while (!str.equals("stop"));


        } catch(IOException ex) {
            System.out.println("Problems with bufer.readLine()");
        }
    }
}

このようなものを近代化することができます.英語で申し訳ありませんが話せません))そしてもちろん正しく書きます))

于 2013-11-13T22:34:15.613 に答える