【发布时间】:2015-12-30 16:45:36
【问题描述】:
输入
t(行数),接下来的 t 行包含空格分隔的数字。
输出
输出应该返回每行数字的总和。
问题
已经在JCreater中编码,没有编译错误!但是只有在取消注释注释行之后才能获得所需的输出,否则程序会突然终止并显示答案为零。而且它只适用于System.out.println 语句,任何其他虚假语法都不会得到结果!
代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
class TestClass {
public static void main(String args[] ) throws IOException
{
int t=0;
BufferedReader StdIn = new BufferedReader(new InputStreamReader(System.in));
try
{
String line = StdIn.readLine();
t = Integer.parseInt(line);
}
catch (IOException e)
{
System.err.println("Error: " + e);
}
int m=0;
int result[]= new int [t];
for(int q=0;q<t;q++)
{
// System.out.println("LOOP: "+q);
m=fun_num();
result[q]=m;
}
for(int q=0;q<t;q++)
System.out.println(result[q]);
}
public static int fun_num()
{
int i=0,o=0,j=0,m=1,s=0,sum=0;
String inp=null;
BufferedReader StdIn = new BufferedReader(new InputStreamReader(System.in));
try
{
String line = StdIn.readLine();
inp=line;
}
catch (IOException e)
{
System.err.println("Error: " + e);
}
String inp2=" ";
j=inp.length();
for(i=0;i<j;i++)
{
if (inp.charAt(i)== inp2.charAt(0))
m++;
}
int num_in_order[]= new int [m];
int num=0;
for(i=0;i<j;i++)
{
if (inp.charAt(i)== inp2.charAt(0))
{
num_in_order[s]=num;
s++;
num=0;
}
else
{
o=((int)(inp.charAt(i))-48);
num=(num*10)+o;
}
}
num_in_order[s]=num;
for(i=0;i<m;i++)
sum=sum+num_in_order[i];
return (sum);
}
}
【问题讨论】:
-
你应该看看在 Scanner 中包装 System.in,它会让你的生活更轻松,你的代码也会更容易阅读。
-
这到底应该做什么?请澄清,提供一些示例输入以及您期望的输出。
-
使用 BufferedReader 很好,但共享一个阅读器来读取输入会更有意义,而不是尝试制作多个
-
假设输入:2 1 2 25 6 输出:3 31