【问题标题】:No compilation error but output error for the code (JCreator):代码没有编译错误但输出错误(JCreator):
【发布时间】: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

标签: java numbers add


【解决方案1】:

我认为您创建的第一个阅读器(StdIn)正在缓冲所有输入,然后fun_num() 中的阅读器有机会查看它。尝试将 StdIn 作为参数传递给“fun_num”函数,而不是每次都创建它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多