我的代码如下。我希望它能吐出这样的东西:
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
的定义有关。
EDIT:当您确认首席信息官与控制台交互时,这一点现在很清楚了。当您调用getInt
时,除了换行符的之外,您最终会解析输入。由于控制台被定义为回显它得到的每一次击键,换行符(既是输入分隔符,也是换行符/换行符)必须输出到某个地方。。。这正是您在输出中看到换行符的原因。
例如,如果您在某个地方添加另一个getInt
,您将在输出中看到4个换行符,而不是3个。
您发布的代码根本不会产生任何新行(甚至不会在单独的值集之间产生)。你是如何运行代码的?你确定你发布的代码是正在执行的同一版本吗?
此外,还有几点:
- 您不需要将
sN
、exMark
和cwMark
强制转换为int,它们已经声明为int - 您应该将
Mark
变量的名称更改为mark
——以大写字母开头的名称通常只用于类和接口
不确定CIO是什么(一些stdin?),但它是可响应的:
sN = CIO.getInt();
cwMark = CIO.getInt();
exMark = CIO.getInt();