java集合的一个程序,总是提示找不到符号,找不到原因在哪?求大神帮助!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合的一个程序,总是提示找不到符号,找不到原因在哪?求大神帮助!相关的知识,希望对你有一定的参考价值。

public class TestIterator

public static void main(String[] args)

//创建一个集合
Collection books = new HashSet();
books.add("轻量级J2EE企业应用实战");
books.add("Struts2权威指南");
books.add("基于J2EE的Ajax宝典");
//获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext())

String book = (String)it.next();
System.out.println(book);
if (book.equals("Struts2权威指南"))

it.remove();

//对book变量赋值,不会改变集合元素本身
book = "测试字符串";

System.out.println(books);


编译就提示如下:
---------- 编译Java程序 ----------
TestIterator.java:6: 找不到符号
符号: 类 Collection
位置: 类 TestIterator
Collection books = new HashSet();
^
TestIterator.java:6: 找不到符号
符号: 类 HashSet
位置: 类 TestIterator
Collection books = new HashSet();
^
TestIterator.java:11: 找不到符号
符号: 类 Iterator
位置: 类 TestIterator
Iterator it = books.iterator();
^
3 错误

输出完成 (耗时 0 秒) - 正常终止

参考技术A 没有引入类
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;追问

谢啦,但是编译正确,运行不出来结果

本回答被提问者采纳
参考技术B 楼上正解,

不过,请楼主注意,在遍历一个集合的时候,不能修改集合的结构(增减元素)

找不到符号:Java [重复]

【中文标题】找不到符号:Java [重复]【英文标题】:Cannot find Symbol: Java [duplicate] 【发布时间】:2012-09-09 20:01:39 【问题描述】:

如果这是一个奇怪的问题,我很抱歉,但我刚刚开始 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>

【问题讨论】:

您在哪里定义您在称为menu 的方法中使用的mn 变量? 我使用 m 和 n 是因为我认为只要在方法结构中定义了参数类型,我就可以将它们的值传递给方法而不管它们的名称。 【参考方案1】:

您从未在 menu 方法的主体中定义您的 input 变量。尝试在menu 方法中添加Scanner input = new Scanner(System.in)。只需在main 中定义变量,not 就可以让menu 访问它。如果你想避免多次创建 Scanner 实例,你可以这样做

import java.util.Scanner;

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

然后您可以在所有方法中使用input


编辑:我刚刚注意到mn 有类似的情况:您必须在使用它们的方法中定义它们,或者使它们成为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.
    

【讨论】:

马上去试试。谢谢! 我认为你在做某事。你能提供一个代码示例吗? 那是非常有效的兄弟。这有助于将其缩小到两个错误 - 我再次更新了编译器输出。如果你能看看那个。那会很有帮助! 我的错误,忘记将 System.in 参数添加到 Scanner 构造函数和 menu 方法参数 - 请参阅编辑。现在应该一切正常! :-P 构造函数啊! :) 这是它现在显示的内容: c:\java\bin>javac MathMenu.java MathMenu.java:64: 错误:MathMenu 类中的方法菜单不能用于给出 n 类型;菜单(); ^ required: String[] found: no arguments reason: 实际参数列表和形式参数列表的长度不同 1 错误 c:\java\bin> 这是什么意思?形式参数列表和实际参数列表的长度不同?【参考方案2】:

您没有在程序中定义input,而是调用了

choice=input.nextInt();

假设你想从用户那里得到输入,你需要有

Scanner input = new Scanner(System.in)  

就在choice=input.nextInt();之前

【讨论】:

谢谢,但我在 main 中定义了? 如果你在 main 中定义了它,你需要将它作为参数传递给 menu() (或者)你可以将它从 main 中删除并放在 menu() 中。【参考方案3】:

您的所有函数都获得名为 a & b 的参数,但使用 n & m。改变其中之一。例如:

private static int sum(int n, int m)

    return n+m;

【讨论】:

另外,@Nambari 的回答是对我的补充 (+1)。 这样做并帮助将错误缩小到 6 个。其中一些仍然与未找到符号有关,并且一个流浪者说实际参数列表和正式参数列表的长度不同。跨度>

以上是关于java集合的一个程序,总是提示找不到符号,找不到原因在哪?求大神帮助!的主要内容,如果未能解决你的问题,请参考以下文章

写了一段java程序,编译时提示找不到符号,请问该怎么修改

maven编译时候提示找不到符号怎么办

java 中总是出现找不到符号 是怎么回事

使用java的jar包默认类提示找不到符号

java中提示找不到符号

IDEA 中 Lombok 编译报错 Java 找不到符号问题