我对main方法的输出有困难。如果一个用户输入一堆随机字符串,我的程序应该只获得整数并将它们分组成一对。例如,如果用户输入3 2 54 -5
,则输出应为:
(3,2)
(54,-5)
或者,另一个例子:如果输入是1 2 3
,程序应该只输出
(1,2)
因为找不到数字3
的任何其他对。该计划的重点是成对收集数字。如果程序无法将String转换为int,则抛出异常。请问smb请帮帮我?
public static void main(String [] args) throws Exception
{
int [] number = new int [args.length];
try
{
for (int i = 0; i < args.length; i++)
{
number[i] = Integer.parseInt(args[i]);
System.out.println("("+i+","));
}
}
catch (NumberFormatException e)
{
System.out.println(e.getMessage());
}
}
答案 0 :(得分:0)
首先,为了遍历所有输入而不是在第一次触发非整数时离开循环,try / catch块必须在for循环内。然后,为了处理你想要成对的事实,你不想在每次使用int时打印出来,只想在从零开始的计数器是奇数时才打印出来。只有在找到整数时(当没有抛出异常时),计数器才会递增。最后,我相信你所说的是你只想在没有找到int对的情况下抛出异常,所以这就是计数器从未通过的情况。所以这一切都可以按如下方式处理:
int count = 0;
for (int i = 0; i < args.length; i++)
{
try
{
number[count] = Integer.parseInt(args[i]);
if(count%2==1)
System.out.println("("+number[count-1]+","+number[count]+")");
count++;
}
catch (NumberFormatException e)
{
//if you're intention is to throw an exception if something other than an int is entered.
throw new Exception(e.getMessage());
}
}
if(count <= 1) throw new Exception("No int pair found");
答案 1 :(得分:0)
我认为你可以做的是使用String类中的split方法,如果你已经知道用户将使用该格式,你就无法解析它们,因为用户输入了一些空格。如果用户输入的数据来自String数组,您可以使用以下内容:
public static void main(String [] args) throws Exception
{
int[] numbers = new int[args.length];
try
{
for (int i = 1; i < args.length; i+=2)
{
number[i-1] = Integer.parseInt(args[i-1].split(" ")[0];
number[i] = Integer.parseInt(args[i].split(" ")[0];
System.out.println("("+number[i-1]+","+number[i]+")");
}
}
catch (NumberFormatException e)
{
System.out.println(e.getMessage());
}
}
此外,如果您使用i + = 2,正如您在for中所见,那么您从1开始,然后它从2开始增加2.然后它与自身和之前的数字一起工作,保证只有对
答案 2 :(得分:0)
这对你有用,
int[] number = new int[args.length];
try {
for (int i = 0; i < args.length; i++) {
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(args[i]);
if (m.find()) {
number[i] = Integer.parseInt(m.group());
System.out.print(number[i] + ",");
}
}
} catch (NumberFormatException e) {
System.out.println(e.getMessage());
}