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;
}
您没有在程序中定义输入,但正在调用

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