2017-10-07 80 views
0

所以我正在解決Techgig上的一個問題,如下所示: 在那裏我必須打印斐波那契數列直到陣列中的10個位置,前兩個輸入是由用戶輸入。如何輸入1〜2而不是1 2. InputMismatchException

我的代碼是這樣:

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。請爲我提供一種方法來刪除此異常

+0

您可以將輸入讀取爲字符串,然後使用'〜'作爲標記進行拆分。 – denis

回答

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("}"); 
} 
} 

閱讀格式的輸入字符串「NUM1 NUM2〜」,然後從這個字符串中提取的數字。

+0

謝謝老兄。但是3個測試案例中有1個仍然失敗。 –

相關問題