找不到符号:Java
如果这是一个奇怪的问题,我很抱歉,但我刚刚开始OOP,遇到了一个简单的菜单驱动的数学程序,我应该做这个问题。我清除了编译器给我的所有错误,但现在它给了我大约14个新错误,其中大部分被描述为“找不到符号”。下面是我的代码:找不到符号:Java,java,oop,symbols,Java,Oop,Symbols,如果这是一个奇怪的问题,我很抱歉,但我刚刚开始OOP,遇到了一个简单的菜单驱动的数学程序,我应该做这个问题。我清除了编译器给我的所有错误,但现在它给了我大约14个新错误,其中大部分被描述为“找不到符号”。下面是我的代码: import java.util.Scanner; public class MathMenu { //MENU METHOD private static void menu(String args[]) { int choice; System.out.print
import java.util.Scanner;
public class MathMenu
{
//MENU METHOD
private static void menu(String args[])
{
int choice;
System.out.printf("Enter '1' to add");
System.out.printf("Enter '2' to subtract");
System.out.printf("Enter '3' to exit");
System.out.printf("\nPlease enter your choice: ");
choice=input.nextInt();
if (choice==1)
sum(n,m);
if (choice==2)
dif(n,m);
else if(choice==3)
return;
}
//SUM
private static int sum(int a, int b)
{
return n+m;
}
//DIFFERENCE
private static int dif(int a, int b)
{
if(n<m)
return m-n;
else
return n-m;
}
public static void main(String args[])
{
int n=15;
int m=8;
Scanner input = new Scanner(System.in);
menu();
}
}
所有函数都会获得名为a&b的参数,但可以使用n&m。换一个。例如:
private static int sum(int n, int m)
{
return n+m;
}
您没有在程序中定义
input
,而是调用
choice=input.nextInt()
假设您想从用户那里获得输入,您需要
Scanner input = new Scanner(System.in)
就在
choice=input.nextInt()之前
您从未在菜单
方法的主体中定义输入
变量。尝试在菜单
方法中添加Scanner input=new Scanner(System.in)
。只需在main
中定义变量not即可访问菜单。如果要避免多次创建扫描仪
实例,可以执行以下操作
import java.util.Scanner;
public class MathMenu {
private static Scanner input = new Scanner(System.in);
...
}
然后,您可以使用所有方法中的input
。
编辑:我刚刚注意到m
和n
有一些相似之处:您必须在使用它们的方法中定义它们,或者将它们设置为静态
字段。如果由我决定,我会这样做:
import java.util.Scanner;
public class MathMenu {
private static Scanner input = new Scanner(System.in);
private static int n = 15;
private static int m = 8;
// ...
// your other methods unchanged
// ...
public static void main(String[] args) {
menu(args); // or just "menu()" if you remove the arguments from the menu method declaration.
}
}
你在哪里定义你在名为菜单的方法中使用的m
和n
变量?我使用了m和n,因为我认为只要在方法结构中定义了参数类型,我就可以将它们的值传递给方法,而不管它们的名称如何。另外,@Nambari的答案是对我的补充(+1)。这样做有助于将错误缩小到6。其中一些错误仍然与找不到的符号有关,一个错误表示实际参数列表和形式参数列表的长度不同。谢谢,但我在main中定义了它?如果在main中定义了它,则需要将其作为参数传递给menu()(或)您可以将其从主菜单中删除并放入菜单()中。我马上就去试试。谢谢!我想你有什么发现。你能提供一个代码示例吗?这非常有效,兄弟。这有助于将它缩小到两个错误-我已经再次更新了编译器输出。如果你能看一看的话。那将非常有帮助!我的错误,忘了将系统.in
参数添加到中e> Scanner
constructor和menu
method参数-查看编辑。现在应该都可以工作了!:-PAh构造函数!:)下面是它现在显示的内容:c:\java\bin>javac mathmmenu.java mathmmenu.java:64:错误:类mathmmenu中的方法菜单不能应用于给定n个类型;菜单();^必需:字符串[]找到:无参数原因:实际参数列表和形式参数列表长度不同1错误c:\java\bin>这是什么意思?正式参数列表和实际参数列表长度不同?
import java.util.Scanner;
public class MathMenu {
private static Scanner input = new Scanner(System.in);
private static int n = 15;
private static int m = 8;
// ...
// your other methods unchanged
// ...
public static void main(String[] args) {
menu(args); // or just "menu()" if you remove the arguments from the menu method declaration.
}
}