找不到符号: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;
}
您没有在程序中定义输入,但正在调用
choice=input.nextInt
假设您想从用户那里获得输入,您需要
Scanner input = new Scanner(System.in)
选择之前的右键=input.nextInt 您从未在菜单方法体中定义过输入变量。尝试在菜单方法中添加Scanner input=new ScannerSystem.in。简单地在main中定义变量并不能让菜单访问它。如果要避免多次创建扫描仪实例,可以执行以下操作
import java.util.Scanner;
public class MathMenu {
private static Scanner input = new Scanner(System.in);
...
}
然后您可以使用所有方法的输入。
编辑:我刚刚注意到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.
}
}
您在哪里定义在名为menu的方法中使用的m和n变量?我使用m和n是因为我认为只要在方法结构中定义了参数类型,就可以将它们的值传递给方法,而不管它们的名称如何。另外,@Nambari的回答是对我的+1的补充。他做到了这一点,并帮助将错误缩小到了6。其中一些仍然与找不到的符号有关,一个错误的符号表示实际参数列表和形式参数列表的长度不同。谢谢,但我在main中定义了它?如果在main中定义了它,则需要将其作为参数传递给菜单,或者可以将其从main中删除并放到菜单中。马上尝试一下。非常感谢。我想你有什么发现。你能提供一个代码样本吗?那很有效,兄弟。这有助于将它缩小到两个错误——我再次更新了编译器输出。如果你能看看的话。那会很有帮助的!我的错误是,忘记将System.in参数添加到Scanner构造函数和menu方法参数中-请参阅编辑。现在一切都应该开始了!:-PAh构装师!:下面是它现在显示的内容:c:\java\bin>javac mathmmenu.java mathmmenu.java:64:error: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.
}
}