有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAutil。扫描仪如何使用BufferedReader在Java中获取空间分隔的输入?

如何使用BufferedReader在Java中获取空格分隔的输入 请相应地更改代码,我希望a、b、n的值是以空格分隔的整数,然后我希望在每个测试用例之后按Enter键。 这意味着首先输入测试用例的数量,然后按Enter键。然后输入a的值,然后按空格,再按空格,然后输入n的值,然后按回车键输入下一个测试用例

我知道这可以通过扫描仪轻松完成,但我不想使用它,因为它会在在线评委身上抛出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) 个答案

  1. # 1 楼答案

    首先读取要读取的输入行数

    然后分析每一行并得到字符串

    虽然我还没有添加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;
       }
     }