簡體   English   中英

如何使用BufferedReader在Java中使用空格分隔的輸入?

[英]How to take space separated input in Java using BufferedReader?

如何使用BufferedReader在Java中使用空格分隔的輸入? 請相應地更改代碼,我希望將a,b,n的值設置為以空格分隔的整數,然后在每個測試用例之后按Enter鍵。 這意味着首先我將輸入測試用例的數量,然后按Enter鍵。 然后,我輸入a的谷值,然后按Space,然后按b,再按Space,然后輸入n的值,然后按Enter鍵輸入下一個測試用例。

我知道可以通過Scanner輕松完成此操作,但是我不想使用它,因為它會在在線裁判上引發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;
     }
}

首先讀取要讀取的輸入行數。

然后解析每一行並獲取String。

盡管我還沒有添加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;
   }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM