2016-04-15 54 views
1

我正在創建一個簡單的程序,獲取名稱,年齡和最喜歡的數字/秒。問題在於,當用戶選擇輸入多於1的最愛號碼時,會出現此異常。使用橢圓或省略號出錯

exception

請幫我解決這個問題仍使用橢圓測試類 - > favnum2方法*

測試類

import java.util.Scanner; 
public class testing{ 
public static Scanner input; 


public static void main(String[] args){ 

    boolean choicerepeat=true; 
    int favnumoftimes; 

    while(choicerepeat==true){ 
     input = new Scanner(System.in); 
     testing2 obj1 = new testing2(); 
     String name=""; 
     int age=0; 
     favnumoftimes=0; 
     double favnum=0, favnumarr[]=new double[999]; 
     boolean choice1; 

     System.out.print("What is your name? "); 
     name = input.nextLine(); 
     System.out.print("What is your age? "); 
     age = input.nextInt(); 

     obj1.message1(name); 
     obj1.message2(age); 

     System.out.print(name+" do you only have one favorite number? (If yes type 'true' else 'false' - NOTE: lowercase only) "); 
     choice1 = input.nextBoolean(); 

     if(choice1==true) 
      favnum1(); 
     else{ 
      System.out.println("How many favorite numbers do you have "+name+"? "); 
      favnumoftimes = input.nextInt(); 
      for(int a=0;a<favnumoftimes;a++){ 
       System.out.print("Enter favorite number "+ (a+1) +": "); 
       favnumarr[a]=input.nextDouble(); 
      } 

      for(int a=0;a<favnumarr.length;a++){ 
       favnum2(favnumoftimes, favnumarr[a]); 
      } 
     } 

     System.out.println(); 
     System.out.println("Do you want to restart the program? (true(Yes) else false(No)) "); 
     choicerepeat = input.nextBoolean(); 

    } 
} 

public static void favnum1(){ 
    System.out.print("Enter favorite number: "); 
    double favnumholder1 = input.nextDouble(); 
    System.out.println("Your favorite number is "+favnumholder1+" ."); 
} 

public static double favnum2(int favnumoftimesholder,double...favtemphold2){ 
    System.out.print("Your favorite numbers are "); 
    for(int a=0;a<=favnumoftimesholder;a++){ 
     System.out.print(favtemphold2[a]+", "); 
    } 
    return 0; 
} 
} 

testing2類

public class testing2{ 
public static String message1(String nameholder){ 
    for(int a=0;a<nameholder.length();a++){ 
     char strholder = nameholder.charAt(a); 
     if(Character.isDigit(a)){ 
      System.out.println("Names don't have numbers... "); 
      break; 
     } 
     else continue; 
    } 
    System.out.println("\nHi "+nameholder+"! Welcome to my simple program. "); 
    return nameholder; 
} 

public static int message2(int ageholder){ 
    System.out.println("Your age is "+ageholder+" years old? Oh my goodness. "); 
    System.out.println(); 
    return ageholder; 
} 
} 
+2

我建議你在這裏通過堆棧跟蹤,而不是將它們鏈接爲圖像。 – Thomas

+0

謝謝你RubioRic。 – Jammes

回答

1

問題是,可變參數使用le創建新數組ngth等於傳遞的參數數量。因此double...favtemphold2將創建一個新的數組favtemphold2和因爲你只通過1個元件(favnum2(favnumoftimes, favnumarr[a]);),該陣列將具有長度1

你可能想要麼通過多個元件或整個陣列,即favnum2(favnumoftimes, favnumarr);。由於double...基本上是語法糖double[]他們是平等的,並通過一個雙陣列的雙可變參數將工作。

雖然未來使用可變參數的警告:請謹慎使用Object...,因爲數組也是對象。

+0

謝謝托馬斯先生。 :d – Jammes