0

如何使用BufferedReader在Java中使用空格分隔的輸入? 請相應地更改代碼,我希望a,b,n的值作爲空格分隔的整數,然後我想在每個測試用例後按Enter鍵。 這意味着首先輸入測試用例的數量,然後按Enter鍵。然後我輸入一個值然後我會按空格鍵,然後空格然後我會輸入n的值,然後我會按Enter鍵爲下一個測試用例的輸入。如何使用BufferedReader在Java中使用空格分隔的輸入?

我知道這可以很容易地通過掃描儀完成,但我不想使用它,因爲它會引發在線評審員的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

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

然後解析每一行並獲取字符串。

雖然我還沒有添加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; 
    } 
} 
相關問題