我有一个在数组中搜索最大数字的函数。我想使函数搜索从控制台输入的多个单词。
例如,我输入了两个单词(car,ride),它们被添加到数组中,然后"surasti"
函数正在比较它们是否在数组中。
我试图自己做,但我是一个开始,似乎太难了:(
正在搜索的功能:
public static produktas[] surasti (produktas G[], int n){
produktas A[] = new produktas[1];
produktas max = G[0];
for (int i=1; i<n; i++)
if (max.gautiSvori()<G[i].gautiSvori()) max = G[i];
A[0]=max;
return A;
}
调用该函数的代码(A
是您必须搜索的数组。):
case 5:
B = surasti(A, n);
System.out.println("Sunkiausias gyvunas yra:");
spausdinti_sar_ekrane(B, B.length);
break;
produktas类:
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;
}
public String gautiSali (){
return salis;
}
public double gautiSvori (){
return svoris;
}
public double gautiKaina (){
return kaina;
}
}
当我尝试将功能更改为此(不知道其工作正常,无法测试):
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];
}
}
}
return A;
} catch(IOException ie){
ie.printStackTrace();
}
}
当我尝试使用此代码时,我在public static produktas[] surasti (produktas G[], int n){
行收到此错误:
This method must return a result of type produktas[]
答案 0 :(得分:0)
您的比较运算符不正确。请尝试以下代码:
public static produktas surasti(produktas G[]) {
produktas max = G[0];
for (int i = 0; i < G.length; i++) {
if (max.gautiSvori() < G[i].gautiSvori()) {
max = G[i];
}
}
return max;
}
首先需要传递数组并将数组的第一个元素设置为最大值。接下来遍历数组并检查是否produktas
具有更高的svoris
值。如果是,请将最大值更改为指向此新produktas
。在for循环结束时,您现在将max
设置为produktas
,其中svoris
的值最高。
代码中很少有东西可以修复以获得更高质量的代码。
surasti
方法。我们可以做一个G.length
(在我上面的代码中我做过)。 produktas
Produktas
A
,G
等答案 1 :(得分:0)
对于正确编译的代码,您的方法也会在catch块中返回。
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];
}
}
}
return A;
} catch (IOException ie) {
ie.printStackTrace();
return null; // Expected return from catch block
}
}
要正确理解问题,请开始使用像eclipse这样的IDE,而不是简单地使用记事本并通过java / javac编译代码
更合适的代码如下所示。当你想退出程序时,在控制台中键入q。
public static produktas[] surasti(produktas G[], int n) {
BufferedReader consoleReader = null;
produktas produktasFound[] = new produktas[5]; // Initalize array to store the produkt found
try {
consoleReader = new BufferedReader(new InputStreamReader(System.in));
boolean exit = false;
produktas produktasFound[] = new produktas[5];
int j = 0;//current produktFound index
while (!exit) {
System.out.println("Kokio produkto ieskosime?");
String produktPav = in.readLine();
if ("q".equals(produktPav)) {
exit = true;
} else {
for (int i=1; i<n; i++){
if (found.equals(G[i].gautiPav())){
A[j] = G[i];
j++;
}
}
}
if(j == 5)
exit = true;
}
return produktasFound; // return all the 5 produktas found
} catch (IOException e) {
e.printStackTrace();
} finally {
if (consoleReader != null) {
try {
consoleReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return produktasFound; //If no produkt is found from the array returned is blank
}