gpt4 book ai didi

java - 使用省略号或省略号出了问题

转载 作者:行者123 更新时间:2023-11-30 07:27:23 25 4
gpt4 key购买 nike

我正在创建一个简单的程序,用于获取姓名、年龄和最喜欢的号码。问题是,当用户选择输入超过 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;
}
}

测试2类

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;
}
}

最佳答案

问题在于可变参数创建长度等于传递参数数量的新数组。因此 double...favtemphold2 将创建一个新数组 favtemphold2 并且因为您只传递 1 个元素 (favnum2(favnumoftimes, favnumarr[a]);) 该数组的长度为 1。

您可能想要传递更多元素或整个数组,即 favnum2(favnumoftimes, favnumarr);。由于 double... 基本上是 double[] 的语法糖,它们是相等的,并且为 double vararg 传递一个 double 数组将起作用。

对 future 使用可变参数的警告:小心使用Object...,因为数组也是对象。

关于java - 使用省略号或省略号出了问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36642825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com