public static int seqSearch(int numRecords, String[] stuName,
double[] stuGpa, String nameKey, double gpaKey)
for(int i = 0; i < numRecords; i++)
if(stuName[i] == nameKey && stuGpa[i] == gpaKey)
return i;
return -1;
那么,我如何使用if语句来控制它呢?我正在进行顺序搜索以查找是否在数组中找到了名称,如果gpa在数组中,那么它应该返回它在(i)中找到的位置。但是,它所做的只是返回-1并打印出没有找到的。
答案 0 :(得分:3)
这里有两个单独的问题:
equals()
方法(或其中一个亲属)比较字符串 - 否则您要比较两个字符串是否是相同的引用(实例)而不是等效的序列字符。==
比较双打,因为双打的相等性更加细微。查看this paper以获取有关原因的更多信息。请参阅this question了解为什么在java中使用==
进行浮点比较是一个坏主意。
除此之外,我还要提到您的实现假设stuName
和stuGpa
都是相同长度的数组。这很可能不是这种情况......在开始迭代数组之前,可能需要断言。
答案 1 :(得分:1)
字符串必须与Java中的.equals进行比较,而不是==。
if(stuName[i].equals (nameKey) && stuGpa[i] == gpaKey)
答案 2 :(得分:0)
你可能想要
if (stuName[i].equals(nameKey) && stuGpa[i].equals(gpaKey))
答案 3 :(得分:0)
if(stuName[i] == nameKey
不太可能是正确的,您正在比较对象标识而不是字符串内容。试试if(stuName[i].equals(nameKey)
答案 4 :(得分:0)
您正在比较两个字符串。 字符串是不可变的。 请使用“equalsIgnoreCase()”或“equals()”来比较字符串
请参阅此处的示例 http://www.java-samples.com/showtutorial.php?tutorialid=224
答案 5 :(得分:0)
一个基本问题是
stuName[i] == nameKey
仅比较对象在内存中是否是相同的String对象。
您实际上想要使用nameKey.equals(stuName[i])
来比较实际的字符串值。
并且您可能希望使用.equalsIgnoreCase
来区分大小写。
答案 6 :(得分:0)
以下对于if语句是正确的。 stuName [i]是一个字符串,因此与.equals进行比较。 stuGpa [i]是双重使用==。
if(stuName[i].equals(nameKey_ && stuGpa[i] == gpaKey)
答案 7 :(得分:0)
您的问题不是条件if语句,而是条件运算符==
。 ==
引用对象的指针值,其中.equals
方法返回由对象计算的内容。
就像之前所说的人一样,在下一行中将==
切换为.equals
:
public static int seqSearch(int numRecords, String[] stuName,
double[] stuGpa, String nameKey, double gpaKey)
for(int i = 0; i < numRecords; i++)
if(stuName[i].equals(nameKey) && stuGpa[i] == gpaKey)
return i;
return -1;
答案 8 :(得分:0)
实际回答有关控制if语句的问题......
我相信你所做的事情对于多个返回语句很好,但是......
我个人更喜欢我的方法的一个入口点和一个出口点。我有多个退出点,总觉得很脏。
所以,我会考虑以下代码:
public static int seqSearch(int numRecords, String[] stuName, double[] stuGpa, String nameKey, double gpaKey)
int value = -1;
for(int i = 0; i < numRecords; i++) { // Don't forget your braces, they aren't required, but wait until you add a newline and forget to add them...
if(some.boolean().equals(comparison.here())) {
value = i;
break;
}
}
return value;
}
最好的运气。