を終了していない:は、Javaインプットメソッド私は、この問題をうまくしようとしている
入力
入力ストリームは、整数愛(0≤愛≤1018)のセットが含まれています。数字はスペースや改行で区切られます。入力ストリームのサイズは256 KBを超えません。
あなたは、出力の平方根をすべき最初の1までの最後の1からそれぞれ数愛のための出力
。各平方根は、小数点以下4桁以上の別の行に印刷する必要があります。
サンプル:
入力:
1427 0
876652098643267843
5276538
出力:
2297.0716
936297014.1164
0.0000
37.7757
そして、ここに私のコードがある:
public class ReverseRoot
{//start class
public static void main(String[] args)
{//start main
Scanner in = new Scanner(System.in);
ArrayList<Long> array = new ArrayList<Long>();
array.add(in.nextLong());
while(in.hasNextLong())
{
array.add(in.nextLong());
}
in.close();
for (int i = array.size(); i > 0; i--)
System.out.printf("%.4f%n", Math.sqrt((double)array.get(i)));
}//end main
}//end class
誰でも取引が分かりますか?
私は、これが問題である特定のことはこれで十分慣れていないんだけど、JavaDocのから:「次の()とのhasNext()メソッドおよびそのプリミティブ型(nextInt()やhasNextInt()などの)コンパニオンメソッドは、最初にデリミタパターンに一致する入力をスキップし、次のトークンを返そうとします。hasNextメソッドとnextメソッドの両方が、さらに入力待ちをブロックすることがあります。関連付けられている次のメソッドがブロックするかどうかには関係がありません。 " –
whileループが無限に実行されています。あなたはどこかでそれを壊す必要があります – FallAndLearn
@FallAndLearn長さの違う文字を入力するまで実行されます。 – Blobonat