このように一行に数個の数字を入力したいのですが、
14 53 296 12 1
数字をスペースで区切り、それらをすべて配列に配置します。どうすればこれを行うことができますか?また、入力されたすべての数値が整数であり、入力された数値が 10 未満であることを確認するにはどうすればよいでしょうか? おそらくtry / catch例外を使用していますか?
行を読む
String line = // how ever you are reading it in
スペースで分割、ドキュメントを見てくださいString.split()
String[] numbers = line.split("\\s");
サイズを確認if(numbers.length > 10) //... to large
それぞれが整数であることを確認し、 を見てInteger.parseInt()
、新しい配列に入れます。これらすべてをまとめて...
String line = //How you read your line
String[] numbers = line.split("\\s");
if(numbers.length <= 10)
{
int[] myNumbers = new int[numbers.length]
int i = 0;
for(String s:numbers) {
try {
int num = Integer.parseInt(s);
myNumbers[i] = num;
i++;
} catch (NumberFormatException nfex) {
// was not a number
}
}
}
else
// To many numbers
String line = "12 53 296 1";
String[] line= s.split(" ");
int[] numbers = new int[splitted.length];
boolean correct=true;
if(splitted.length <10)
{
correct=false;
}
for(int i=0;i<splitted.length;i++)
{
try
{
numbers[i] = Integer.parseInt(splitted[i]);
}
catch(NumberFormatException exception)
{
correct=false;
System.out.println(splitted[i] + " is not a valid number!");
}
}
現在、配列番号には解析された数値が含まれており、ブール値の正しい値は、すべての部分が数値であり、10 個以上の数値があったかどうかを示しています。
目的の効果を実現するためのコードを次に示します。
int[] nums;
try {
String line = ...; // read one line and place it in line
StringTokenizer tok = new StringTokenizer(line);
if (tok.countTokens() >= 10)
throw new IllegalArgumentException(); // can be any exception type you want, replace both here and in the catch below
nums = new int[tok.countTokens()];
int i = 0;
while (tok.hasMoreTokens()) {
nums[i] = Integer.parseInt(tok.nextToken());
i++;
}
} catch (NumberFormatException e) {
// user entered a non-number
} catch (IllegalArgumentException e) {
// user entered more that 10 numbers
}
その結果nuns
、ユーザーが入力したすべての整数が配列に含まれます。ユーザーが非整数または 10 個を超える数字を入力すると、catch ブロックがアクティブになります。