简体   繁体   中英

How to take space separated input in Java using BufferedReader?

How to take space separated input in Java using BufferedReader? Please change the code accordingly, i wanted the values of a, b, n as space seperated integers and then I want to hit Enter after every test cases. Which means first i'll input the number of test cases then i'll press the Enter key. Then i input the vale of a then i'll press Space, b then again Space then i'll input the value of n, then i'll press the Enter key for the input for the next testcase.

I know that this can be done easily through Scanner but i don't wanna use it because it throws TLE(Time Limit Extended) error on online judges.

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

First read the number of input lines to be read.

Then parse each line and get the String.

Though I have not added the NumberFormatException handling, but it's a good idea to have that.

Change your for loop like this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM