在 Java 中出现 "cannot find symbol" 错误

Getting "cannot find symbol" error in Java

我正在编写一些代码来从文本板读取静态股票编号。我 运行 看看出了什么问题,我似乎无法修复这个找不到符号的错误。

import java.io.*;
import java.util.*;

public class StockMarket
{
    public static void main(String[] args) throws IOException
    {

        Scanner keyboard = new Scanner(System.in);

        System.out.println("Enter the filename: ");
        String filename = keyboard.nextLine();

        File file = new File(filename);
        Scanner inputFile = new Scanner(file);

        while (inputFile.hasNext())
        {
            checkValidity();
        }

        inputFile.close();

    }

    public static boolean checkValidity()
    {

    String line = inputFile.nextLine();
    double numberOfShares = inputFile.nextDouble();
    double buyPricePerShare = inputFile.nextDouble();
    double buyComissionRate = inputFile.nextDouble();
    double sellPricePerShare = inputFile.nextDouble();
    double sellComissionRate = inputFile.nextDouble();

    }

}

您的方法checkValidity 行不通。您尝试访问方法中未知的变量 inputFile。您必须将 is 作为参数传递。

public static boolean checkValidity(Scanner inputFile)

{

String line = inputFile.nextLine();
double numberOfShares = inputFile.nextDouble();
double buyPricePerShare = inputFile.nextDouble();
double buyComissionRate = inputFile.nextDouble();
double sellPricePerShare = inputFile.nextDouble();
double sellComissionRate = inputFile.nextDouble();

}

您的 checkValidity() 方法几乎没有问题,如下所述:

(1) 您的 Scanner 对象作用域仅存在于 main 方法 中,因此将该对象传递给 checkValidity 方法

(2) 验证 checkValidity 方法中的输入

(3) 您的 checkValidity 方法具有 return 类型的 boolean,因此您需要 return 一个 boolean来自它的值 即,如果验证成功,return true 或者如果验证失败,return false

您参考以下带有内联注释的代码:

public static boolean checkValidity(Scanner inputFile) {
        String line = inputFile.nextLine();
        double numberOfShares = inputFile.nextDouble();
        double buyPricePerShare = inputFile.nextDouble();
        double buyComissionRate = inputFile.nextDouble();
        double sellPricePerShare = inputFile.nextDouble();
        double sellComissionRate = inputFile.nextDouble();
        boolean validationSuccess = false;
        //validate your inputs
        // If validations are successful  then set validationSuccess = true;
        return validationSuccess;//return boolean
    }

此外,从 main() 传递 scanner 对象,如下所示:

while (inputFile.hasNext()) {
     checkValidity(inputFile);//pass scanner object
}