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

标签 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;                                   
  }

最佳答案

我不确定 CIO 是什么。您到底从哪里获得输入?我可以推测您正在从控制台获取整数,这可以解释您所看到的内容:您正在从控制台获取输入,并打印到同一个控制台。要输入整数,必须有人在某处敲入换行符,并且该换行符将被回显到控制台。

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

编辑:当您确认 CIO 与控制台交互时,这一点现在很清楚了。当您调用getInt时,您最终会解析输入除了换行符。由于控制台被定义为回显它所获得的每个击键,因此换行符(既充当输入分隔符又充当换行符/换行符)必须输出到某处......这正是您在输出中看到换行符的原因。

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

关于Java 未按预期输出到终端(出现新行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12706642/

相关文章:

java - requestLocationUpdates 与 getLastLocation

java - 未正确添加到数组。希望得到帮助

java - 为什么程序检测不到我赢了(汉诺塔)?

java - 在 BlueJ 中打开网址

java - 向类添加 GUI

java - 为什么我的 NPE 只是在程序运行时偶尔出现?

java - session 不会失效

java - 在主线程中获取空指针异常

java - OkHttp Post 未获取服务器端发送的数据

c# - 确定用户CPU大小的java程序?