【问题标题】:Incompatible types: Card cannot be converted to java.lang.String不兼容的类型:卡片无法转换为 java.lang.String
【发布时间】:2015-10-30 23:40:03
【问题描述】:

我的代码不断出现此错误。我似乎找不到问题。

我不知道该怎么做,因为我什至查看了教科书,它给了我一个类似的方法,只是变量不同。

我在 BlueJ 上。

 public int findFirstOfPlayer(String searchString)
{
    int index = 0;
    boolean searching = true;
    while(index < cards.size() && searching) {
        String cardname = cards.get(index); // Error highlights index
        if(cardname.contains(searchString)) {
            searching = false;
        }
        else {
            index++;
        }
        if(searching) {
            return -1;
        }
        else {
            return index;
        }
    }
}

【问题讨论】:

  • 改用cards.get(index).toString();
  • 什么是cards?能否详细介绍一下实施情况?
  • 抱歉没有详细说明。我正在用 ArrayList 卡片收集卡片;

标签: java loops if-statement while-loop findfirst


【解决方案1】:

这就是问题所在,如果您使用 Eclipse 或 Idea 之类的东西,它甚至会为您突出显示。

    String cardname = cards.get(index);

很明显,cards 与 String 不兼容,你不能这样分配,因为你的收藏卡可能不是 String 类型,也就是 ArrayList&lt;String&gt; cards 你可以这样做:

    String cardname = cards.get(index).toString();

    String cardname = String.valueOf(cards.get(index));

【讨论】:

  • 当我做 card.get(index).toString() 时,它给了我一个缺失的 return 语句,并突出显示我在原始帖子中放置的最后一个括号。
  • 在末尾添加return index;
【解决方案2】:

鉴于 Card 本身就是一个类,您无法将其与字符串进行比较。您必须实现一个方法,该方法返回一个可以与searchString 进行比较的字符串,或者使用卡片对象中的一个变量进行比较。 像这样:

String cardname = cards.get(index).toString();

或者

String cardname = cards.get(index).name

【讨论】:

  • 当我做 card.get(index).toString() 时,它给了我一个缺失的 return 语句,并突出显示我在原始帖子中放置的最后一个括号。
  • 在最后两个括号之间添加一个 return 语句,因为 while 循环不能保证运行 Java 会考虑它不运行的选项,在这种情况下,您的方法将缺少 return 语句。
猜你喜欢
  • 2017-10-03
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 2016-08-25
  • 2017-02-13
相关资源
最近更新 更多