在netbeans上运行此代码时,它总是运行if语句块,但是在HackerRank代码编辑器上编译时,它总是进入else语句。帮我解决错误。
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");
}
}
}
答案 0 :(得分:0)
为什么同时使用scanner
和bufferedreader
?请尝试使用扫描仪中的next()
方法
s=sc.next();
如果您想使用bufferedreader
,请尝试使用这两个语句。
int T=Integer.parseInt(sb.readLine());
for(int j=0;j<T;j++)
{
String s=sb.readLine();
如果同时让scanner
和bufferedreader
听取输入流的输入,那么bufferedreader
将如何知道输入被读取的位置? (但scanner
知道它)
这就是它返回null
的原因。我希望你理解它。
为了简单起见,只需使用scanner
或bufferedreader
,而不是两者。