Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找不到符号:Java_Java_Oop_Symbols - Fatal编程技术网

找不到符号:Java

找不到符号: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

如果这是一个奇怪的问题,我很抱歉,但我刚刚开始OOP,遇到了一个简单的菜单驱动的数学程序,我应该做这个问题。我清除了编译器给我的所有错误,但现在它给了我大约14个新错误,其中大部分被描述为“找不到符号”。下面是我的代码:

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