Java未按预期输出到终端(出现新行)

时间:2012-10-03 10:31:37

标签: java bluej

我的代码如下。我期待它吐出类似的东西:

  

SN = 12345678 EX = 73 CW = 73 Mark = 73.0

     

SN = 87654321 EX = 50 CW = 70 Mark = 60.0

但我得到了:

  

     

     

     

SN = 12345678 EX = 73 CW = 73 Mark = 73.0

     

     

     

SN = 87654321 EX = 50 CW = 70 Mark = 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;                                   
  }

3 个答案:

答案 0 :(得分:1)

我不确定CIO是什么。你究竟从哪里获得输入?我可以理解你从控制台获取整数,这可以解释你所看到的内容:你从控制台获得输入,并打印到同一个控制台。要输入一个整数,有人必须在某个地方点击换行符,并且该换行符将被回显到控制台。

我可能会抽烟,但我认为这与CIO的定义有关。

编辑:当您确认CIO与控制台进行交互时,现在已经很清楚了。当您调用getInt时,最终会解析换行符之外的输入。由于控制台被定义为回显它获得的每个击键,换行符(作为输入分隔符换行符/换行符)必须在某处输出...这正是为什么在输出中看到换行符。

例如,如果您在其中的某处添加另一个getInt,则会在输出中看到4个换行符,而不是3个。

答案 1 :(得分:0)

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

另外,有几点:

  • 您无需将sNexMarkcwMark投射到整体中,它们已经被声明为此类。
  • 您应该将Mark变量的名称更改为mark - 以大写字母开头的名称通常仅用于类和接口。

答案 2 :(得分:0)

不确定CIO是什么(某些标准输入?),但这是有意义的:

sN = CIO.getInt();
cwMark = CIO.getInt();
exMark = CIO.getInt();