所以基本上用户输入从扫描仪输入的序列。 12, 3, 4
,等
它可以是长任意长度的,它必须是整数。
我想将字符串输入转换为整数数组。
所以int[0]
将是12
, int[1]
将3
等
任何提示和想法? 我想实现的if charat(i) == ','
让前面的号码,并分析它们在一起,并将其应用到阵列中的当前可用插槽。 但我不太知道如何代码。
所以基本上用户输入从扫描仪输入的序列。 12, 3, 4
,等
它可以是长任意长度的,它必须是整数。
我想将字符串输入转换为整数数组。
所以int[0]
将是12
, int[1]
将3
等
任何提示和想法? 我想实现的if charat(i) == ','
让前面的号码,并分析它们在一起,并将其应用到阵列中的当前可用插槽。 但我不太知道如何代码。
您可以读取扫描整个输入线,然后通过分割线,
那么你有一个String[]
分析每个号码为int[]
索引一对一匹配...(假设有效的输入和无NumberFormatExceptions
)像
String line = scanner.nextLine();
String[] numberStrs = line.split(",");
int[] numbers = new int[numberStrs.length];
for(int i = 0;i < numberStrs.length;i++)
{
// Note that this is assuming valid input
// If you want to check then add a try/catch
// and another index for the numbers if to continue adding the others (see below)
numbers[i] = Integer.parseInt(numberStrs[i]);
}
作为溜溜球的回答表明,上述可以更简明地在Java中实现8:
int[] numbers = Arrays.stream(line.split(",")).mapToInt(Integer::parseInt).toArray();
为了处理无效的输入
你需要考虑你想要什么需要在这种情况下做的,你要知道,有在该元素坏的输入或跳过它。
如果你不需要知道输入无效,但只是想继续分析,你可以做以下的数组:
int index = 0;
for(int i = 0;i < numberStrs.length;i++)
{
try
{
numbers[index] = Integer.parseInt(numberStrs[i]);
index++;
}
catch (NumberFormatException nfe)
{
//Do nothing or you could print error if you want
}
}
// Now there will be a number of 'invalid' elements
// at the end which will need to be trimmed
numbers = Arrays.copyOf(numbers, index);
我们应该修剪所得阵列的原因是,在所述的端部的无效元素int[]
将由表示0
,这些需要在订单的一个有效输入值之间进行区分待去除0
。
结果是
输入: “2,5,6,坏,10”
输出:[2,3,6,10]
如果您需要了解无效输入后,你可以做到以下几点:
Integer[] numbers = new Integer[numberStrs.length];
for(int i = 0;i < numberStrs.length;i++)
{
try
{
numbers[i] = Integer.parseInt(numberStrs[i]);
}
catch (NumberFormatException nfe)
{
numbers[i] = null;
}
}
在这种情况下错误的输入(不是有效的整数)的元件将是空的。
结果是
输入: “2,5,6,坏,10”
输出:[2,3,6,空,10]
你可能改善不捕捉异常(表现看到更多关于这这个问题 ),并使用不同的方法来检查有效整数。
逐行
int [] v = Stream.of(line.split(",\\s+"))
.mapToInt(Integer::parseInt)
.toArray();
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class MultiArg {
Scanner sc;
int n;
String as;
List<Integer> numList = new ArrayList<Integer>();
public void fun() {
sc = new Scanner(System.in);
System.out.println("enter value");
while (sc.hasNextInt())
as = sc.nextLine();
}
public void diplay() {
System.out.println("x");
Integer[] num = numList.toArray(new Integer[numList.size()]);
System.out.println("show value " + as);
for (Integer m : num) {
System.out.println("\t" + m);
}
}
}
但终止while循环,你必须把任何性格特征,在输入的结束。
恩。 输入:
12 34 56 78 45 67 .
输出:
12 34 56 78 45 67