我收到这样的错误: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;
}
}
答案 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()
应描述对象,而不是单个参数它由。