2017-09-27 66 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

相關問題