Java 使用椭圆或省略号出错

Java 使用椭圆或省略号出错,java,indexoutofboundsexception,Java,Indexoutofboundsexception,我正在创建一个简单的程序,可以获取姓名、年龄和喜爱的号码。问题是,当用户选择输入多个常用号码时,会出现此异常 请帮助我解决在测试类-->favnum2方法中仍然使用椭圆的问题。* 测试班 import java.util.Scanner; public class testing{ public static Scanner input; public static void main(String[] args){ boolean choicerepeat=true;

我正在创建一个简单的程序,可以获取姓名、年龄和喜爱的号码。问题是,当用户选择输入多个常用号码时,会出现此异常

请帮助我解决在测试类-->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;
}
}
import java.util.Scanner;
公共类测试{
公共静态扫描仪输入;
公共静态void main(字符串[]args){
布尔值choicerepeat=true;
我最喜欢的时间;
while(choicerepeat==true){
输入=新扫描仪(System.in);
testing2 obj1=新的testing2();
字符串名称=”;
int年龄=0;
favnumoftimes=0;
双favnum=0,favnumarr[]=新双[999];
布尔选择1;
系统输出打印(“你叫什么名字?”);
name=input.nextLine();
系统输出打印(“您的年龄是多少?”);
age=input.nextInt();
obj1.message1(名称);
obj1.message2(年龄);
System.out.print(name+“您只有一个最喜欢的号码吗?(如果是,请键入'true'或'false'-注意:仅小写)”;
choice1=input.nextBoolean();
如果(选项1==true)
favnum1();
否则{
System.out.println(“您最喜欢的数字有多少”+name+“?”);
favnumoftimes=input.nextInt();

对于(int a=0;a而言,问题在于varargs创建的新数组的长度等于传递的参数数量。因此,
double…favtemphold2
将创建一个新数组
favtemphold2
,并且由于只传递1个元素(
favnum2(favnumoftimes,favnumarr[a]);
),该数组的长度将为1

您可能希望传递更多的元素或整个数组,即,
favnum2(favnumoftimes,favnumarr);
。因为
double…
基本上是
double[]
的语法糖分,所以它们是相等的,为双vararg传递双数组也可以


不过,对未来使用varargs的一个警告是:小心
对象…
,因为数组也是对象。

我建议您跳过这里的堆栈跟踪,而不是将它们链接为图像。谢谢托马斯爵士。:d
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;
}
}