如果我使用bufferedreader而不是scan,则相同的代码会给出运行时错误

时间:2016-02-06 12:05:24

标签: java java.util.scanner bufferedreader

schoolContext.Set<Standard>().Attach(standardEf);

此代码正在为扫描程序正常运行,但如果我尝试使用缓冲读取器或字符串标记生成器,则会产生运行时错误。 我是java新手,我需要使用大整数来解决问题的其他部分。

1 个答案:

答案 0 :(得分:0)

您的代码没有任何问题。您将BufferReader定义为BufferedReader br = new BufferedReader(new InputStreamReader(System.in));,将String定义为br.readLine();

此代码段完全正常,并将输入字符串打印回控制台:

public static void main (String[] args)
{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println(br.readLine());
}

您可能会遇到错误的一些可能性:

  1. 的StringTokenizer

    StringTokenizer st = new StringTokenizer(br.readLine());
    

    在将其传递给StringTokenizer之前,请确保从br.readLine()返回字符串。

    String text = br.readLine();
    if(!StringUtils.isEmpty(text)) {
        StringTokenizer st = new StringTokenizer(br.readLine());
        /* Rest of the code */
    }
    
  2. 循环条件变量

    for(i=1;i<=n;i++)
    

    我没有看到BufferedReader初始化n的任何内容。确保正确初始化。

  3. 以下是快速代码段:

    public static void main (String[] args) throws Exception
    {
        long j, n, f, mm = 1000000007;
        int i, x;
        BigInteger u, sum, temp, m;
        BigInteger[] a = new BigInteger[100009];  long[] b=new long[100009];
    
        Scanner har = new Scanner(System.in);
    
        long t = har.nextInt();
        for(f=0;f<t;f++)
        {   
            temp = BigInteger.valueOf(1);   
            sum = BigInteger.valueOf(0);    
            u = BigInteger.valueOf(0);
            n = har.nextInt();    
            x = har.nextInt(); 
            m = har.nextBigInteger();
    
            /* Goto Next Line */
            har.nextLine();
    
            /* Start Reading Line */
            String text = har.nextLine();
            System.out.println("String Value: " + text);
            if(null != text) {
                StringTokenizer st = new StringTokenizer(text);
                for(i = 1; i <= n; i++)
                {
                    b[i] = Integer.parseInt(st.nextToken());
                    System.out.println("Value of b[" + i + "] = " + b[i]);
                }
            }
        }
    }