您好,我目前正在学习Java,我正在做一项作业,我需要*创建一个调用多种方法的菜单。我有3节课(Contacto,议程和校长)。我的任务是尝试评估构造函数和数组以及其他一些基本理论。
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种方法(添加,搜索和擦除联系人)。这三种方法均无效,并接收一个参数。我尝试过,但是出现错误,提示我需要一些参数:
case 1:
Agenda.addContacto(); and also tried Agenda.addContacto(contacto);
我的议程课看起来像这样
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
对象的实例。