0

私の目的は、 for-loop を使用して、ユーザーが入力した数値を追加することです。

これが私のコードです:

import java.io.*;
class Student {
    public static void main (String args[]){
    int mks=0, i=0 ,percnt=0;
    BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
        try {
            System.out.println("Enter Marks Of Student ");      

            for (i=0;i<=4;i++){
            mks= Integer.parseInt(br.readLine());
            mks=mks+i;
            }
        }catch (Exception e) {}
        percnt=mks/5;

        System.out.println("GRAND TOTAL = "+mks+ " PERCENTAGE"+percnt);
    }
}

このコードで最後に入力されたマーク + 4 を取得しています。

4

4 に答える 4

1

「私の目的は、forループを使用してユーザーが入力した数値を追加することです」

ユーザーが入力した各整数を累積する必要があります。

mks += Integer.parseInt(br.readLine());

「このコードで最後に入力されたマーク+4を取得しています」

これは、コードが次の理由によるものです。

mks= Integer.parseInt(br.readLine());  // Get the integer the user entered
mks=mks+i;        // Add i (which in the case of the last iteration is 4)

mksループが再起動するたびにの値を設定しています。また、ユーザーが入力したすべての数値をカウントしようとしている場合は、ループカウンターiをアキュムレータ変数に追加する必要はありません。mks

于 2012-07-16T21:58:13.500 に答える
0

あなたのコードは次のようになります。

int mks=0, i=0 ,percnt=0;
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
try {
    System.out.println("Enter Marks Of Student ");

for (i=0;i<=4;i++){
    mks+=Integer.parseInt(br.readLine())+i;
    //mks=mks+i;
}
}catch (Exception e) {}
percnt=mks/5;
System.out.println("GRAND TOTAL = "+mks+ " PERCENTAGE"+percnt);
于 2012-07-16T22:09:33.263 に答える
0

「mks= Integer.parseInt(br.readLine());」のたびに が呼び出されると、mks の以前の値を上書きします。したがって、最後に実行すると、最後に入力された行が +4 (その時点での i の値) になります。

ロードされたすべてのマークの値を合計したい場合は、上書きされない新しい変数を作成する必要があります。または、代わりに、次のことができます

mrks = mrks + Integer.parseInt(br.readLine()) + i
于 2012-07-16T21:58:53.637 に答える
0

各ループ反復でアキュムレータ (mks) 変数を再初期化しています。

ループの外側で一度定義し、値をゼロにしてから、ループの反復ごとに追加する必要があります。

また、取り除く mks=mks+i

最後に、例外をキャッチして無視しても何の役にも立ちません。例外が発生した場合は、少なくともエラー メッセージを表示する必要があります。それ以外の場合は、句で例外を宣言し、throws伝播させます (つまり、プログラムを終了させます)。

于 2012-07-16T21:59:20.377 に答える