没有编译错误但代码输出错误(JCreator):

时间:2015-12-30 16:45:36

标签: java numbers add

输入

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);
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你创建的第一个读者(StdIn)是在fun_num()的读者有机会看到之前缓冲所有输入。尝试将StdIn作为参数传递给“fun_num”函数,而不是每次都创建它。

相关问题