如何输入1~2而不是1 2. InputMismatchException

时间:2017-10-07 14:55:56

标签: java fibonacci inputmismatchexception

所以我在Techgig上解决了一个问题: 在那里,我必须打印斐波那契数字的序列,直到阵列中的10个位置,并且前两个输入由用户输入。

我的代码如下:

import java.io.*;

import java.util.*;

public class CandidateCode{

    public static void main(String args1[]) throws Exception
    {
        Scanner sc=new Scanner(System.in);
        int first=sc.nextInt();
        int second=sc.nextInt();
        int [] array=new int[10];
        array[0]=first;
        array[1]=second;
        int i;
        for(i=2;i<10;i++)
        {
            array[i]=first+second;
            first=array[i-1];
            second=array[i];
        }
        System.out.print("{"+array[0]);
        for(i=1;i<10;i++)
        {
            System.out.print(","+array[i]);
        }
        System.out.print("}");
    }
}

现在样本输入应该是1 2,输出应该显示为{1,2,3,5,8,13,21,34,55,89}

但他们使用Test Case作为1~2,编译时的代码给出了InputMismatchException。请提供一个删除此异常的方法

1 个答案:

答案 0 :(得分:0)

此代码可以解决您的问题。

import java.io.*;
import java.util.*;

public class CandidateCode{

public static void main(String args1[]) throws Exception
{
    Scanner sc=new Scanner(System.in);
    String s=sc.next();
    int first=Integer.parseInt(s.substring(0,s.indexOf("~")));
    int second=Integer.parseInt(s.substring(s.indexOf("~")+1));
    int [] array=new int[10];
    array[0]=first;
    array[1]=second;
    int i;
    for(i=2;i<10;i++)
    {
        array[i]=first+second;
        first=array[i-1];
        second=array[i];
    }
    System.out.print("{"+array[0]);
    for(i=1;i<10;i++)
    {
        System.out.print(","+array[i]);
    }
    System.out.print("}");
}
}

读取格式为&#34; Num1~Num2&#34;的输入字符串;然后从该字符串中提取数字。