当前位置: 首页 > 面试题库 >

找不到符号:Java

韩经武
2023-03-14
问题内容

如果这是一个怪异的问题,我感到很抱歉,但是我刚刚开始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();

}


}

这是新的编译器输出:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Shahraiz Tabassam>cd c:\java\bin

c:\java\bin>javac MathMenu.java
MathMenu.java:7: error: no suitable constructor found for Scanner()
private static Scanner input = new Scanner();
                               ^
    constructor Scanner.Scanner(ReadableByteChannel,String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(ReadableByteChannel) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(Path,Charset) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(Path,String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(Path) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(File,CharsetDecoder) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(File,String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(File) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(InputStream,String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(InputStream) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(Readable) is not applicable
      (actual and formal argument lists differ in length)
    constructor Scanner.Scanner(Readable,Pattern) is not applicable
      (actual and formal argument lists differ in length)
MathMenu.java:64: error: method menu in class MathMenu cannot be applied to give
n types;
menu();
^
  required: String[]
  found: no arguments
  reason: actual and formal argument lists differ in length
2 errors

c:\java\bin>

问题答案:

您从未inputmenu方法的主体中定义变量。尝试Scanner input = new Scanner(System.in)menu方法中添加。简单地定义的变量main没有
放弃menu对它的访问。如果要避免Scanner多次创建实例,可以执行以下操作

import java.util.Scanner;

public class MathMenu {
    private static Scanner input = new Scanner(System.in);
    ...
}

然后,您可以使用input所有方法。

编辑 :我刚刚注意到与m和类似的东西n:您必须在使用它们的方法中定义它们,或将它们设置为static字段。如果由我决定,我会这样做:

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


 类似资料:
  • DBHelper。JAVA LoginSevlet.java 我正在尝试访问LoginServlet中的DBHelper类,而编译i做了javac DBHelper.javajavac-cp"C:\User\dell\Desktop\MYServlet\WEB-INF\lib\servlet-api-2.5.jar;"LoginServlet.javaLoginServlet.java:13:错误

  • 问题内容: 我正在尝试为计算器编写第一个单元测试,但是NetBeans表示找不到符号和注释。 我应该包括一些东西吗? 我正在使用NetBeans 7.3.1和W7。 编辑:谢谢大家,将其导入为静态帮助。测试注释仅需包括 导入org.junit.Test; 问题答案: 是静态方法。由于不能使用静态方法而没有以静态方式显式导入它们,因此必须使用以下两种方法之一: 要么: 因为有点不同。是的注释,您可以

  • 问题内容: 我有一个奇怪的错误。我在同一包中有2个类,但它们彼此找不到。根据我的记忆,只要这些类位于同一包中,它们就应该能够调用彼此的方法。 我的代码与此类似: 在A.java中: 在B.java中: 这给了我一个错误。 这两个类都依赖于某些文件,但是我已经包括了这些jar的路径并可以很好地编译,但是由于某些原因B找不到A … 当我在两个类中都删除时,它们可以正常编译。 问题答案: 由于您要编译位

  • 问题内容: 我打算将linux工具移植到Windows。该工具在linux系统上运行良好,但是现在在Windows上,我收到此“找不到符号”错误。 我有这个小班级: 并且在执行javac Main.java时现在出现错误: 导入foo.bar:找不到符号^符号:类栏位置:包foo Main.java和bar.java在同一目录中。我想念什么? 问题答案: 一方面,应该称呼为惯用语… 理想情况下,应

  • 问题内容: 我使用时代码工作正常 吗?在我看来这很奇怪。 (错误显示在终端上) 问题答案: 这是 Arrays 类的静态方法。 您应该像这样调用它: 请注意,您仍然必须像这样导入Arrays类: 或者像其他人提到的那样,如果您进行静态导入,则可以省略类名。 我认为这样做对可读性更好。

  • (菜鸟失误,我确定。) 我是计算机科学专业的一年级学生,正在尝试用代码编写作业程序; 但是在编译时,我得到了错误; Lab10Ex1.java:10: 错误: 找不到符号 System.out.print(n 1);^ 符号:变量n 位置: 班级 Lab10Ex1 如果有人能向我解释我做错了什么,或者如何纠正它,我会非常感激。