如何使用BufferedReader在Java中获取空格分隔输入?

时间:2017-08-26 21:22:00

标签: java java.util.scanner whitespace bufferedreader time-limiting

如何使用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;
     }
}

1 个答案:

答案 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;
   }
 }