Java 使用IF语句控制return语句? 公共静态int-seqSearch(int-numRecords,String[]stuName, 双[]stuGpa,字符串nameKey,双gpaKey) for(int i=0;i
那么,我如何使用if语句来控制它呢?我正在进行顺序搜索,以确定名称是否在数组中找到,如果gpa在数组中,那么它应该返回在(I)中找到的位置。但是,它所做的只是返回-1并打印出没有找到任何字符串。字符串必须与Java中的.equals进行比较,而不是==Java 使用IF语句控制return语句? 公共静态int-seqSearch(int-numRecords,String[]stuName, 双[]stuGpa,字符串nameKey,双gpaKey) for(int i=0;i,java,if-statement,return-value,Java,If Statement,Return Value,那么,我如何使用if语句来控制它呢?我正在进行顺序搜索,以确定名称是否在数组中找到,如果gpa在数组中,那么它应该返回在(I)中找到的位置。但是,它所做的只是返回-1并打印出没有找到任何字符串。字符串必须与Java中的.equals进行比较,而不是== public static int seqSearch(int numRecords, String[] stuName, double[] stuGpa, String nameKey, double gpaKey)
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;
字符串必须与Java中的.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] == nameKey && stuGpa[i] == gpaKey)
return i;
return -1;
你可能想要
if(stuName[i].equals (nameKey) && stuGpa[i] == gpaKey)
你可能想要
if(stuName[i].equals (nameKey) && stuGpa[i] == gpaKey)
if(stuName[i]==nameKey
不太可能正确,您是在比较对象标识而不是字符串内容。请尝试if(stuName[i].equals(nameKey)
如果(stuName[i]==nameKey
不太可能正确,您是在比较对象标识而不是字符串内容。请尝试if(stuName[i].equals(nameKey)
您正在比较两个字符串。
字符串是不可变的。
请使用“equalsIgnoreCase()或“equals()”来比较字符串
参见此处的示例
您正在比较两个字符串。 字符串是不可变的。 请使用“equalsIgnoreCase()或“equals()”来比较字符串 参见此处的示例
一个基本问题是
if (stuName[i].equals(nameKey) && stuGpa[i].equals(gpaKey))
仅比较对象是否为内存中的同一字符串对象
实际上,您需要使用nameKey.equals(stuName[i])
来比较实际的字符串值。
您可能想使用
.equalsIgnoreCase
来解决大小写不敏感的问题。一个基本问题是
if (stuName[i].equals(nameKey) && stuGpa[i].equals(gpaKey))
仅比较对象是否为内存中的同一字符串对象
实际上,您需要使用nameKey.equals(stuName[i])
来比较实际的字符串值。
您可能想使用
.equalsIgnoreCase
来表示大小写不敏感。以下内容对于if语句是正确的。stuName[i]是一个字符串,因此与.equals比较。stuGpa[i]是一个双精度的so use==
stuName[i] == nameKey
下面是if语句的正确用法。stuName[i]是一个字符串,因此与.equals进行比较。stuGpa[i]是一个double,因此use==
stuName[i] == nameKey
这里有两个不同的问题:
equals()
方法比较字符串(或其近亲之一)-否则您将比较两个字符串是否是相同的引用(实例),而不是等效的字符序列==
比较双打,因为双打的相等性更为微妙。查看更多有关原因的信息==
进行浮点比较是个坏主意
除此之外,我还想指出,您的实现假设stuame
和stuGpa
都是相同长度的数组。这可能不太可能……在您开始迭代数组之前,这可能值得一提。这里有两个不同的问题:
equals()
方法比较字符串(或其近亲之一)-否则您将比较两个字符串是否是相同的引用(实例),而不是等效的字符序列==
比较双打,因为双打的相等性更为微妙。查看更多有关原因的信息==
进行浮点比较是个坏主意
除此之外,我还要提到,您的实现假设
stuame
和stuGpa
都是相同长度的数组。这种情况可能不太可能……在您开始迭代数组之前,这可能是值得断言的。您的问题不是条件if statement,但条件运算符==
=
引用对象的指针值,其中作为.equals
方法返回由对象计算的值
正如大家之前所说,在下一行中,将您的=
切换到.equals
:
if(stuName[i].equals(nameKey_ && stuGpa[i] == gpaKey)
公共静态int-seqSearch(int-numRecords,String[]stuName,
双[]stuGpa,字符串nameKey,双gpaKey)
for(int i=0;i
您的问题不是条件if语句,而是条件运算符==
=
引用对象的指针值,其中作为.equals
方法返回对象计算的值
正如大家之前所说,在下一行中,将您的=
切换到.equals
:
if(stuName[i].equals(nameKey_ && stuGpa[i] == gpaKey)
公共静态int-seqSearch(int-numRecords,String[]stuName,
双[]stuGpa,字符串nameKey,双gpaKey)
for(int i=0;i
要实际回答有关if语句控制的问题
我相信你们所做的对多个返回语句来说是好的,但
我个人更喜欢一个入口点和一个出口点作为我的方法。拥有多个出口点总是让我感觉很肮脏
<>所以,我会考虑下面的代码:< /P>
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;
公共静态int-seqSearch(int-numRecords,String[]stuName,double[]stuGpa,String-nameKey,double-gpaKey)
int值=-1;
对于(int i=0;i