类型不匹配:无法从String转换为

时间:2016-11-21 21:02:30

标签: java

我收到这样的错误:Type mismatch: cannot convert from String to produktas ...我到处寻找解决方案,但对我来说似乎太难了。会恭喜任何帮助

我的功能是:

public static produktas[] surasti(produktas G[], int n) {
    try {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        produktas A[] = new produktas[5];
        for (int j = 0; j < 5; j++) {
            System.out.println("Kokio produkto ieskosime?");
            String found = in.readLine();
            for (int i = 1; i < n; i++) {
                if (found.equals(G[i].gautiPav())) { 
                    A[j] = G[i].gautiPav(); // error line
                }
            }
        } 
        return A; 
    } catch(IOException ie) {
        ie.printStackTrace();
    }
    return null;
}

我的数组类看起来像:

class produktas {
    private String pavadinimas;
    private String salis;
    private Double svoris;
    private Double kaina;

    produktas() {}
    produktas(String pav, String salis, double svoris, double kaina) {
        pavadinimas = pav;
        this.salis = salis;
        this.svoris = svoris;
        this.kaina = kaina;
    }

    public String gautiPav() {
        return pavadinimas;
    }
}

2 个答案:

答案 0 :(得分:2)

A是“produktas”的数组。您正在尝试为其分配一个字符串,即您的gautiPav()方法返回的字符串。

你确定你不打算写这个吗?

A[j] = G[i]; // error line

如果您看到这样的字符串:name.produktas@60e53b93那么您应该覆盖Object.toString()方法以返回更易读的字符串,典型示例可能如下所示。如果您正在使用任何现代IDE,例如Eclipse,那么就有一个帮助器,对于Eclipse:Source,Generate toString()......

@Override
public String toString() {
    return String.format("[produktas: %s]", pavadinimas);
}

答案 1 :(得分:0)

在聊天中讨论后,您似乎想要将A作为produktas返回,但是编写/查看引用A的guatiPav()方法。如果您想要A,则需要覆盖toString()表示不同于一系列“随机”输出:

class produktas {
    private String pavadinimas;
    private String salis;
    private Double svoris;
    private Double kaina;

    produktas() {}
    produktas(String pav, String salis, double svoris, double kaina) {
        pavadinimas = pav;
        this.salis = salis;
        this.svoris = svoris;
        this.kaina = kaina;
    }

    public String gautiPav() {
        return pavadinimas;
    }

    @Override
    public String toString() {
        return guatiPav(); // or "return pavadinimas;"
    }
}

或者你想在引用A元素的任何地方直接调用gautiPav()。我强烈推荐后一种方法,因为对象toString()应描述对象,而不是单个参数它由。

组成