因此基本上,用户是从扫描仪输入中输入序列。 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]);
}
正如YoYo的答案所暗示的那样,以上内容可以在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[]
将由a表示0
,需要将这些元素删除以区分有效输入值0
。
结果是
输入:“ 2,5,6,bad,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;
}
}
在这种情况下,输入错误(不是有效的整数),该元素将为null。
结果是
输入:“ 2,5,6,bad,10”
输出:[2,3,6,null,10]
您可以通过不捕获异常来提高性能(有关更多信息,请参见此问题),并使用其他方法检查有效整数。
问题内容: 我正在尝试将分类变量的字符串数组转换为分类变量的整数数组。 例如 我意识到可以通过循环完成此操作,但我想有一种更简单的方法。谢谢。 问题答案: 好吧,这是一个hack …但是有帮助吗?
我有一个购物车php页面,在那里我显示客户端产品。在同一页中,我有一个表单,可以将客户的个人详细信息(如姓名、姓氏等)以及产品信息(如产品名称、数量等)直接发送到我的电子邮件地址。 现在,问题是,当我发送表单时,在我的电子邮件地址上,我收到了所有的信息,但没有产品细节,例如在订单电子邮件中的产品名称字段,我有ARRAY。 我看到将数组转换为字符串时出现问题,但我不知道如何转换,我尝试了几个示例,但
我有“1”作为字符串,我想将它转换为十进制,作为整数。 我尝试了,但它返回49,而不是1个整数。 那么,将“1”字符串转换为1整数需要什么呢?
问题内容: 如何在JavaScript中将字符串转换为整数? 问题答案: 最简单的方法是使用本机函数: 如果这对您不起作用,则有 parseInt , 一元加号 , 带有floor的parseFloat 和 Math.round 方法。 parseInt: 一元加号,如果您的字符串已经是整数形式: 如果您的字符串是浮点数或可能是浮点数,并且您想要一个整数: 或者,如果您要多次使用Math.floo
问题内容: 有什么方法可以将null转换为Integer。null实际上是一个字符串,我在我的服务层中传递该字符串,将其接受为整数。因此,每当我尝试将null字符串强制转换为Integer时,都会引发异常。但是我必须将null转换为Integer。 问题答案: 您 不能 从String强制转换为Integer。但是,如果您尝试将字符串转换为整数,并且必须提供处理字符串的实现,请查看以下代码片段:
问题内容: 给定一个数字: 将其转换为字符串的“最佳”方法是: 问题答案: 有多种方法: (我的偏爱) (我不知道编译器如何处理它,也许它和上面一样有效)