当前位置: 首页 > 知识库问答 >
问题:

java中的编译错误:找不到符号。[副本]

裴金鑫
2023-03-14

我有一段代码,它将一个文本文件转换成一个字符串,然后将字符串的一部分分离成arraylist的不同元素。

import java.util.Scanner;
import java.io.*;
import java.util.ArrayList;

public class Grocery{

    public Grocery(){

        File inFile = new File ("lists.txt");
        Scanner input = new Scanner (inFile);
        String grocery;
        {
             grocery = input.nextLine();
        }
    }

    public void makeSmallerLists(){
        String listLine;
        String line;
        ArrayList<String> smallList = new ArrayList<String>();
        while(input.hasNextLine()){
            line = input.nextLine;
            if(line.equals("<END>")){
                smallList.add(listLine);
            } else{
                listLine = listLine + "\n" + line;
            }
        }
    }
}

但是,当我尝试编译此文件时,它会给我两个错误:

JAVAC Message.javaMessage.java:31:找不到符号符号:变量输入位置:类消息同时(input.hasNextLine()){ ^ Message.java:32:找不到符号符号:变量输入位置:类消息行=input.next线;^

我该如何解决这个问题?我真的不知道怎么了。

我修复了这个问题,现在我的错误是$javac Message.javaMessage.java:34:找不到符号符号:变量nextLine位置:类java.util.扫描仪行=input.next行;^

           ^

现在又怎么了?

共有3个答案

卢出野
2023-03-14

这是因为Scanner对象input已在构造函数(构造函数的本地范围)中声明,因此它在makeSmallerLists()中不可见。您需要将其声明为实例变量,以便在类的所有方法中都可以访问它。

public class Grocery {
    Scanner input; // declared here, as an instance variable
    public Grocery(){
        File inFile = new File ("lists.txt");
        input = new Scanner (inFile);  // initialized here
        ...
    }
    ...
    public void makeSmallerLists() {
        ...
        while(input.hasNextLine()) { // accessible everywhere within the class
        ...
    }
}

麹承
2023-03-14

您有可变范围问题。无法访问范围外的字段。将扫描器声明为全局扫描器,位于构造器外部。

 public class Grocery{
    Scanner input = null;// Declare Scanner here.

    public Grocery(){
        .....
        input=new Scanner (inFile);
    }

还附加方法括号()

      public void makeSmallerLists(){
       ......
        while(input.hasNextLine()){
        line = input.nextLine();// Append () after method. 
       .....
      }
薛利
2023-03-14
 Scanner input = new Scanner (inFile);

输入对于构造函数来说是本地的,您不能在构造函数之外进行访问,并且您正试图在makeSmallList()方法中进行访问。使它作为一个实例成员,以便它可以通过而不是静态上下文。

public class Grocery{

  Scanner input;

和在构造函数中

public Grocery(){

            File inFile = new File ("lists.txt");
             input = new Scanner (inFile);
 类似资料:
  • 我有这样的代码:获取一个文本文件,并将其转换为字符串,然后将字符串的部分分离为ArrayList的不同元素。 然而,当我试图编译它时,它给了我两个错误: javac Message.java Message.java:31:找不到符号symbol:变量输入位置:类消息while(input.HasNextLine()){^Message.java:32:找不到符号symbol:变量输入位置:类消息

  • 问题内容: 嘿,我刚开始我的第一本Java编程书籍,所以这应该很容易解决。弄乱我对条件句的新知识,发现标题错误。 这是代码: 当我尝试编译时: 问题答案: 错误消息告诉您变量“输入”在您的作用域中不存在。您可能想使用Scanner对象,但将其命名为“ x”,而不是“ input”。 应该修复它。

  • 问题内容: 当代码到达递归调用增量时,我收到错误找不到符号,我不知道为什么?这是增量代码。任何帮助将不胜感激。 编辑:我真的是Java的新手,所以可以做的答案越基本越好。好的,所以我收到的错误是:BigNatural.java.35:找不到符号符号方法增量()位置:类java.lang.String temp.increment() 并在此处清除所有其他问题,是整个代码。 }公共类BigNatur

  • 嘿,我刚刚开始我的第一本关于Java的编程书,所以这应该是一个简单的修复。把我对条件句的新知识弄得乱七八糟的,结果我得到了标题错误。 代码如下: 当我尝试编译:

  • 问题内容: 美好的一天,我在同一目录中有两个类Map和Field。我成功地编译了Field.java,但是当我编译Map.java时,我得到了: 这是两个类的代码: 对于Field.java(如有必要): 我分别编译了Field.java和Map.java:javac Field.java没有返回任何错误,但是javac Map.java返回了以上错误。 问题答案: 我仍然不清楚您的问题到底在哪里

  • 我一直在尝试使用Eclipse和Forge编译Minecraft mod,但我只是遇到错误,我想这是与链接Minecraft库有关,但不确定这是我的代码 我正在遵循一个指南,应该在最后得到一条“构建成功”的消息。指南是https://blog.usejournal.com/a-beginners-guide-to-modding-Minecraft-9A42536495F6 这里有个错误