gpt4 book ai didi

Java Switch菜单错误以及如何从另一个类调用方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:00 24 4
gpt4 key购买 nike

嗨,我目前正在学习 Java,正在做一项作业,我需要 *创建一个调用多个方法的菜单。我有 3 个类(class)(联系方式、议程和校长)。我的作业是尝试评估构造函数和数组以及其他一些基本理论。

My menu error is: Principal.java:34: error: cannot find symbol while(opcion!=4).* 

我已经检查并声明了我的变量“opcion”。

public class Principal{

private static void imprimeMenu(){
Scanner input = new Scanner(System.in);

String mainMenu = ("Choose an option from the menu: \n"
+ "1. Add contact\n"
+ "2. Find contact\n"
+ "3. Search contact\n"
+ "4. Exit");

do{
System.out.println(mainMenu);
int opcion = input.nextInt();

switch(opcion){
case 1:
break;
case 2:
System.out.println("Search");
break;
case 3:
System.out.println("Erase");
break;
default:
System.out.println("Command not recognize");
break;
}
}
while(opcion!=4);
}

public static void main(String[] args){
imprimeMenu();
}
}

在我的案例中,我需要调用名为 Agenda 的类中的 3 个方法(添加、搜索和删除联系人)。这3个方法都是void并且接收一个参数。我尝试过,但出现错误,提示我需要一些参数:

case 1:
Agenda.addContacto(); and also tried Agenda.addContacto(contacto);

我的议程类(class)如下所示

public class Agenda{
private Contacto [] contactos;
private int numContactos;


public Agenda(){
this.contactos = new Contacto[10];
this.numContactos = 0;
}

public Agenda(int x){
this.contactos = new Contacto[x];
this.numContactos = 0;
}

public void addContact(Contacto contact){
if(numContactos<contactos.length){
this.contactos [numContactos] = contact;
numContactos+=1;
}
}

最佳答案

您的问题是 opcion 是在循环内定义的,因此它的范围在结束 while 之前结束。

将定义移到循环之外以解决问题:

int opcion = 0;
do{
System.out.println(mainMenu);
opcion = input.nextInt();

switch(opcion){
case 1:
break;
case 2:
System.out.println("Search");
break;
case 3:
System.out.println("Erase");
break;
default:
System.out.println("Command not recognize");
break;
}
} while(opcion!=4);

Agenda.addContacto方法的正确调用确实是Agenda.addContacto(contacto)。在进行调用之前,您需要确保将 contacto 设置为 Contacto 对象的实例。

关于Java Switch菜单错误以及如何从另一个类调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21964037/

24 4 0