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某处添加另一个,您将在输出中看到 4 个换行符,而不是 3 个。

于 2012-10-03T10:37:48.423 回答
0

您发布的代码根本不会产生任何新行(甚至在单独的值集之间也不会)。你是如何运行代码的?您确定您发布的代码与正在执行的版本相同吗?

另外,有几点:

  • 您不需要强制转换sN和整数exMarkcwMark它们已经被声明为这样。
  • 您应该将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 回答