0

BufferedReaderを使用してJavaでスペース区切りの入力を取る方法は? それに応じてコードを変更してください。私はa、b、nの値をスペースで区切った整数として欲しかったので、すべてのテストケースの後にEnterキーを押したいと思います。 最初にテストケースの数を入力してからEnterキーを押します。次に、私はスペースを押して、次にスペースを入力し、次にスペースを入力してnの値を入力します。次に、次のテストケースの入力にEnterキーを押します。BufferedReaderを使用してJavaでスペース区切りの入力を取る方法は?

これはScannerで簡単に行うことができますが、オンライン審査員にTLE(Time Limit Extended)エラーが表示されるため、使用したくありません。

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(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; 
    } 
} 
関連する問題