gpt4 book ai didi

java - 表达式的类型必须是数组类型,但它解析为 ArrayList(试图比较两个数组中的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:34 27 4
gpt4 key购买 nike

我正在尝试将数组中的每个字符串或整数与另一个数组进行比较,然后根据字符串是否存在于另一个数组中来打印结果:下面是整个代码:尝试使用 .equals 比较两个值时,我在 for 循环中出错(不确定其方法是否正确,...我是新手)请帮忙!

public class comparer {
public void compare (){

ArrayList NameofFileinDir = new ArrayList ();
ArrayList Stocks = new ArrayList();
// populate array with files names in dir
try {
Scanner reads = new Scanner (new File("G:/Programming/StockDataDownload/NameOfFileinDir.txt"));
String FileCode;
while (reads.hasNext()){
FileCode = reads.nextLine(); //read next line
NameofFileinDir.add(FileCode);

}
reads.close();
}
catch (IOException e) {
}
// populate array with original stocks
try {
Scanner reads = new Scanner (new File("G:/Programming/StockDataDownload/AllSecurities.txt"));
String StockCode;
while (reads.hasNext()){
StockCode = reads.nextLine(); //read next line
Stocks.add(StockCode);

}
reads.close();
for(int i = 0; i < Stocks.size(); i++) {

for (int j = 0; j < NameofFileinDir.size(); j++) {
if (Stocks[i].equals(NameofFileinDir[j])) > 0) {
System.out.println("Stock:" + Stocks[i]);}
else{
System.out.println("Stock not in files:" + Stocks[i]);
}
}
}

}
catch (IOException e) {
}

}}

最佳答案

  1. ArrayList不是 array . get the element at index i 的语法不同:list.get(i)对比arr[i] .继续阅读 ArrayList ,尤其是 get(int)方法。

  2. 研究什么 String.equals(Object) 返回以及这意味着什么。扫视 Object.equals(Object) 也不会造成伤害,因为默认情况下 java 中的每个对象都会获取此对象。

  3. 考虑使用 foreach 循环代替旧的 for 循环。旧的 for 循环可能非常有用,但这里没有意义。看看这有多干净:

    for (String stock : Stocks) {
    for (String filename : NameofFileinDir) {
    if (stock.equals(filename)) {
    System.out.println(" Stock: " + stocks);
    } else {
    System.out.println("Stock not in files: " + stocks);
    }
    }
    }
  4. ArrayList Stocks = new ArrayList(); .凉爽的。所以你有一个 ArrayList .什么?!现在,这在技术上并不违法,但如果您的 Java 编译器支持类型参数,那么您确实需要使用它们。改为写 List<String> stocks = new ArrayList<String>() .现在阅读您的代码的每个人都会立即知道列表包含的内容。此外,编译器将保证您的列表 包含字符串。如果您尝试做一些疯狂或愚蠢的事情,例如将一些整数和映射与您的字符串一起放入列表中,编译器将会呕吐。

  5. 如果您在 if..else 中打印的是您的意思,那么您的逻辑存在致命缺陷。如果您碰巧比较的当前股票字符串和文件字符串不相等,您将打印“股票不在文件列表中”。但从逻辑上讲,这是否意味着库存字符串和文件字符串都不相等?

关于java - 表达式的类型必须是数组类型,但它解析为 ArrayList(试图比较两个数组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com