我的代码如下。我期待它吐出类似的东西:
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;
}
答案 0 :(得分:1)
我不确定CIO
是什么。你究竟从哪里获得输入?我可以理解你从控制台获取整数,这可以解释你所看到的内容:你从控制台获得输入,并打印到同一个控制台。要输入一个整数,有人必须在某个地方点击换行符,并且该换行符将被回显到控制台。
我可能会抽烟,但我认为这与CIO
的定义有关。
编辑:当您确认CIO与控制台进行交互时,现在已经很清楚了。当您调用getInt
时,最终会解析换行符除之外的输入。由于控制台被定义为回显它获得的每个击键,换行符(作为输入分隔符和换行符/换行符)必须在某处输出...这正是为什么在输出中看到换行符。
例如,如果您在其中的某处添加另一个getInt
,则会在输出中看到4个换行符,而不是3个。
答案 1 :(得分:0)
您发布的代码根本不会生成任何新行(甚至不在单独的值集之间)。你是如何运行代码的?您确定您发布的代码与正在执行的版本相同吗?
另外,有几点:
sN
,exMark
和cwMark
投射到整体中,它们已经被声明为此类。Mark
变量的名称更改为mark
- 以大写字母开头的名称通常仅用于类和接口。答案 2 :(得分:0)
不确定CIO是什么(某些标准输入?),但这是有意义的:
sN = CIO.getInt();
cwMark = CIO.getInt();
exMark = CIO.getInt();