【问题标题】: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();
}