Java 类型不匹配:无法从字符串转换为
我遇到了如下错误:Java 类型不匹配:无法从字符串转换为,java,Java,我遇到了如下错误:类型不匹配:无法从字符串转换为produktas。。。我到处寻找解决方案,但对我来说似乎太难了。我会感谢你的帮助 我的职能是: public static produktas[] surasti(produktas G[], int n) { try { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); produktas A[] = new
类型不匹配:无法从字符串转换为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;
}
A是一个“produktas”数组。您正在尝试向其中分配一个字符串,即gautiPav()方法返回的字符串
你确定你不是故意写这个的吗
A[j] = G[i]; // error line
如果您看到这样的字符串:name。produktas@60e53b93
然后您应该重写Object.toString()
方法以返回更易于阅读的字符串,典型示例可能如下所示。如果您使用的是任何现代IDE,如Eclipse,则有一个帮助程序,对于Eclipse:Source,生成toString()
A是一个“produktas”数组。您正在尝试向其中分配一个字符串,即gautiPav()方法返回的字符串
你确定你不是故意写这个的吗
A[j] = G[i]; // error line
如果您看到这样的字符串:name。produktas@60e53b93
然后您应该重写Object.toString()
方法以返回更易于阅读的字符串,典型示例可能如下所示。如果您使用的是任何现代IDE,如Eclipse,则有一个帮助程序,对于Eclipse:Source,生成toString()
根据聊天中的讨论,您似乎想将A作为produktas返回,但要编写/查看引用A的
guatiPav()
方法。如果希望A的表示方式不同于一系列“随机”输出,则需要重写toString()
:
或者你想在引用A元素的任何地方直接调用
gautiPav()
。我强烈推荐后一种方法,因为对象的toString()
应该是对对象的描述,而不是它所包含的单个参数。在聊天中讨论之后,似乎您想将A作为produktas返回,但在引用A的地方编写/查看guatiPav()
方法。如果希望A以不同于一系列“随机”输出的方式表示,您需要重写toString()
:
或者您希望在引用A元素的任何位置直接调用
gautiPav()
。我强烈建议使用后一种方法,因为对象的toString()
应该是对对象的描述,而不是它包含的单个参数。此行if(find.equals(G[I].gautiPav())
正在尝试将字符串
与产品进行比较,这不是问题。它将返回false
,但这是一个有效的比较。a[j]=G[i].gautiPav()代码>调用gautiPav,它返回的字符串不是produktaa[j]=G[i]。gautiPav();//错误行
那行没问题,就这一行。当我删除它并尝试A[j]=G[I]
时,一切都正常okay@Nordiii是的,我知道,但是怎么解决呢?找不到解决方案。如果(found.equals(G[i].gautiPav())
试图将字符串
与produktas
@matiaselgart进行比较,则这不是问题。它将返回false
,但这是一个有效的比较。a[j]=G[i].gautiPav()代码>调用gautiPav,它返回的字符串不是produktaa[j]=G[i]。gautiPav();//错误行
那行没问题,就这一行。当我删除它并尝试A[j]=G[I]
时,一切都正常okay@Nordiii是的,我知道,但是怎么解决呢?找不到解决方案。执行此操作时,我会收到随机字母,但不会收到pavadinimas
。输出类似于name。produktas@60e53b93
@labasRyta然后您需要覆盖produktas
中的toString
——可能会返回pavadinimas
当我这样做时,我会得到随机字母,但不是pavadinimas
。输出类似于name。produktas@60e53b93
@labasRyta然后您需要覆盖produktas
中的toString
——可能返回pavadinimas
@Override
public String toString() {
return String.format("[produktas: %s]", pavadinimas);
}
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;"
}
}