2017-09-27 65 views
1

我的代码如下:任务是检查no的第一个数字是否为零?

import java.util.*; 
import java.io.*; 
public class Buffer 
{ 
    public static void main(String args[]) throws Exception 
    {    
     int T; 
     Scanner sc = new Scanner(System.in); 
     T = sc.nextInt(); 
     while(T > 0) 
     { 
      InputStreamReader r = new InputStreamReader(System.in);  
      BufferedReader br = new BufferedReader(r);   
      String no = ""; 

      no = br.readLine(); 
      char ch = no.charAt(0); 

      if (ch == '0') 
      { 
       System.out.println("YES"); 
      } 
      else 
      { 
       System.out.println("NO"); 
      } 
      T--; 
     }    
    }  
}  

请帮我看看我的代码,什么是错的到底是什么?

我得到的输出:

Run Time Error Exception in thread "main"<br> 

显示java.lang.NullPointerException在Buffer.main

+2

1.哪一行是19行? 2. NPE是非常常见的错误,并在许多指南中详细解释。你看过这个错误是什么意思吗? – Carcigenicate

+0

'if(no.matches(“0。*”))''而不是你做了那么多工作? –

+0

也不要在循环中打开流 –

回答

0

我认为问题是,你使用两个读卡器(扫描仪和BufferedReader)在同时,实际上它超过了你使用的两个:每次你进入循环时,你都会实例化一个试图读取System.in的BufferedReader。

您是否正在尝试一个有竞争力的编程问题?如果是的话,我建议你坚持使用BufferedReader:

import java.util.*; 
import java.io.*; 
public class Buffer { 

public static void main(String args[])throws Exception { 

    int T; 
    InputStreamReader r = new InputStreamReader(System.in);  
    BufferedReader br = new BufferedReader(r); 
    T = Integer.parseInt(br.readLine()); 
    while(T>0) 
    {  
     String no=br.readLine(); 
     char ch=no.charAt(0); 

     if(ch=='0') 
     { 
     System.out.println("YES"); 
     } 
     else 
     { 
     System.out.println("NO"); 
     } 
     T--; 
    } 
    } 
} 
+0

代码中有什么变化,你能突出显示它们吗?否则,他们很难发现。 – Zabuza

+0

首先我删除了扫描器,然后将BufferedReader移到循环之外 – 0Be95

相关问题