如何使用BufferedReader在Java中使用空格分隔的输入? 请相应地更改代码,我希望a,b,n的值为空格分隔整数,然后我想在每个测试用例后按Enter键。 这意味着首先我输入测试用例的数量,然后按Enter键。然后我输入一个vale然后我按下Space,b然后再按Space然后我输入n的值,然后我按下Enter键输入下一个测试用例。
我知道这可以通过扫描仪轻松完成,但我不想使用它,因为它会在网上评委中抛出TLE(时间限制扩展)错误。
public static void main(String[] args) throws IOException {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputString = br.readLine();
int testCases = Integer.parseInt(inputString);
double a,b,n,j,t=1;
int i;
int ans [] = new int[testCases];
for(i=0;i<testCases;i++)
{
inputString = br.readLine();
a = Double.parseDouble(inputString);
inputString = br.readLine();
b = Double.parseDouble(inputString);
inputString = br.readLine();
n = Double.parseDouble(inputString);
for(j=0;j<n;j++)
{
if(t==1)
{
a*=2;
t=0;
}
else if(t==0)
{
b*=2;
t=1;
}
}
if(a>b)
ans[i]=(int)(a/b);
else
ans[i]=(int)(b/a);
t=1;
}
for(i=0;i<testCases;i++)
System.out.println(ans[i]);
}catch(Exception e)
{
return;
}
}
答案 0 :(得分:0)
首先读取要读取的输入行数。
然后解析每一行并获取字符串。
虽然我没有添加NumberFormatException处理,但是最好有这个。
像这样更改你的for循环:
for(i=0;i<testCases;i++){
inputString = br.readLine();
String input[] = inputString.split("\\s+");
a = Double.parseDouble(input[0]);
inputString = br.readLine();
b = Double.parseDouble(input[1]);
inputString = br.readLine();
n = Double.parseDouble(input[2]);
for(j=0;j<n;j++){
if(t==1){
a*=2;
t=0;
}else if(t==0){
b*=2;
t=1;
}
}
if(a>b){
ans[i]=(int)(a/b);
}else{
ans[i]=(int)(b/a);
t=1;
}
}