我的代码如下。我期待它会吐出类似的内容:
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/