![](/img/trans.png)
[英]how to take input of characters separated by space in java in hackerrank using scanner
[英]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.