1

私が持っているコードは以下です。私はそれが次のようなものを吐き出すことを期待しています:

SN=12345678 EX=73 CW=73 マーク=73.0

SN=87654321 EX=50 CW=70 マーク=60.0

しかし、私は得ています:

.

.

.

SN=12345678 EX=73 CW=73 マーク=73.0

.

.

SN=87654321 EX=50 CW=70 マーク=60.0

(余分な改行がたくさんあります(ピリオドで示されます))

これらがどこから来ているのか、私には本当にわかりません。

正しい方向に向けてください!

class Main
{
    public static void main( String args[] )
    { 
        int sN = 1;
        int cwMark;
        int exMark;
        double Mark;
        while ( sN != 0 )
        {
            sN = CIO.getInt();
            cwMark = CIO.getInt();
            exMark = CIO.getInt();
            Mark = ((double)(exMark + cwMark)/2);
            System.out.print("SN=");
            System.out.print( (int) sN );
            System.out.print(" EX=  ");
            System.out.print( (int) exMark );
            System.out.print(" CW=  ");
            System.out.print( (int) cwMark );
            System.out.print(" Mark =  ");
            System.out.print(Mark);
        }
    }
}

getInt は次のように定義されます。

public static int getInt()
  {
    String res = getLine();                          
    int value = 0;                                 
    try
    {
      value = Integer.parseInt( res.trim() );
    }
    catch ( NumberFormatException ex ) 
    {                                                 
    }
    return value;                                   
  }
4

3 に答える 3

1

私は何CIOがわからない。正確にはどこから入力を取得していますか?コンソールから整数を取得していることを理論化できます。これにより、コンソールから入力を取得し、同じコンソールに出力していることがわかります。整数を入力するには、誰かがどこかで改行を打たなければならず、その改行がコンソールにエコーされます。

私は何かを吸っているかもしれませんが、これは の定義に関係していると思いますCIO

編集: CIO がコンソールと対話することを確認したので、これは明らかです。を呼び出すと、改行文字を除いgetIntて入力を解析することになります。コンソールは、取得するすべてのキーストロークをエコーバックするように定義されているため、改行文字 (入力区切り文字改行/改行文字の両方として機能する) をどこかに出力する必要があります...これがまさに、改行文字が表示される理由です出力。

たとえば、getIntそこに別の行を追加すると、出力に 3 つではなく 4 つの改行文字が表示されます。

于 2012-10-03T10:37:48.423 に答える
0

投稿したコードは、まったく新しい行を生成しません (別々の値のセット間であっても)。コードをどのように実行していますか?投稿したコードは、実行されているのと同じバージョンですか?

また、いくつかのポイント:

  • sNをキャストする必要はなく、int にキャストする必要はありません。それらは既にそのように宣言されていexMarkます。cwMark
  • Mark変数の名前を次のように変更する必要がmarkあります。大文字で始まる名前は通常、クラスとインターフェイスにのみ使用されます。
于 2012-10-03T10:36:37.867 に答える
0

CIOが何であるかはわかりませんが(標準入力ですか?)、責任があります:

sN = CIO.getInt();
cwMark = CIO.getInt();
exMark = CIO.getInt();
于 2012-10-03T10:37:12.753 に答える