2017-01-15 10 views
-1

このコードをnetbeansで実行しているときは、常にif文ブロックを実行しますが、HackerRankコードエディタでコンパイルすると常にelse文になります。エラーで私を助けてください。javaエラーで文字列を初期化

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.util.Scanner; 


class Person { 

public static void main(String[] args) throws Exception{ 
    Scanner sc=new Scanner(System.in); 
    BufferedReader sb=new BufferedReader(new InputStreamReader(System.in)); 
    int T=sc.nextInt(); 
    for(int j=0;j<T;j++) 
     {String s=""; 
     s=sb.readLine(); 
     StringBuffer even=new StringBuffer(); 
     StringBuffer odd=new StringBuffer(); 
     if(s!=null) 
     {for(int i=0;i<s.length();i++) 
     { 
      if(i%2==0) 
       even.append(s.charAt(i)); 
      else 
       odd.append(s.charAt(i)); 
     } 

     System.out.println(even+" "+odd); 
     } 
     else 
      System.out.println("Enter some input"); 
     } 
    } 
} 
+3

なぜ入力に 'Scanner'と' BufferedReader'の両方を使用していますか? –

答えて

0

は、なぜあなたはscannerbufferedreaderの両方を使用していますか?スキャナからnext()方法を試してみてください代わりに

s=sc.next(); 

あなたはbufferedreaderを利用したい場合は、代わりにこれらの二つの文を試してみてください。

int T=Integer.parseInt(sb.readLine()); 
for(int j=0;j<T;j++) 
{ 
    String s=sb.readLine(); 

一度あなたがscannerbufferedreader両方が入力ストリームからの入力を聞く作​​る場合、どのようにbufferedreaderは、入力が読み込まれたどこまで知っているのだろうか? (しかし、scannerはそれを知っています) そのため、代わりにnullを返します。あなたがそれを理解したことを願っています

簡潔にするため、scannerまたはbufferedreaderのいずれかを両方使用しないでください。

関連する問題