【问题标题】:Getting "cannot find symbol" error in Java在 Java 中出现“找不到符号”错误
【发布时间】:2017-03-31 05:36:15
【问题描述】:

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

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();

    }

}

【问题讨论】:

    标签: java java.util.scanner stock cannot-find-symbol


    【解决方案1】:

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

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

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

    (3) 您的 checkValidity 方法有 return 类型的 boolean,因此您需要从中获得 return 一个 boolean,即,如果验证成功,返回true 或者如果验证失败,返回false

    您使用内联 cmets 引用以下代码:

    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
    }
    

    【讨论】:

      【解决方案2】:

      您的方法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();
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        • 2013-12-06
        • 2016-07-22
        • 2013-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多