为什么获取错误时缺少返回状态?(java)而不是c++;
我已经为我的游戏创建了这个函数,它应该读取一个字符串,比如“3黑桃”,并返回它的值(这个例子它值3分) 问题是我得到了这个错误:为什么获取错误时缺少返回状态?(java)而不是c++;,java,c++,function,loops,Java,C++,Function,Loops,我已经为我的游戏创建了这个函数,它应该读取一个字符串,比如“3黑桃”,并返回它的值(这个例子它值3分) 问题是我得到了这个错误:没有找到返回语句 虽然我写的C++代码完全相同,但C++运行时没有任何错误(我来自C++背景) Java代码: public static int getCardValue(String card) { for(int s=0; s != cardSuits.length; s++) //cardSuits is an array of strings
没有找到返回语句
<>虽然我写的C++代码完全相同,但C++运行时没有任何错误(我来自C++背景)
Java代码:
public static int getCardValue(String card)
{
for(int s=0; s != cardSuits.length; s++) //cardSuits is an array of strings
for(int r=0; r != cardRanks.length; r++)//cardRanks is an array of strings
{
String GeneratedCard = cardRanks[r] + " " + cardSuits[s];
if((GeneratedCard).equals(card))
{
if(r >= 0 && r <= 8) //number in array starts from 0(2) to 8(10)
{
return r;
}
else if( r >= 8 && r <= 12) //from 8(10) to 11(KING)
{
return 10;
}
}
else
return -1;
}
}
public static int getCardValue(字符串卡)
{
for(int s=0;s!=cardSuits.length;s++)//cardSuits是一个字符串数组
for(int r=0;r!=cardRanks.length;r++)//cardRanks是一个字符串数组
{
字符串GeneratedCard=cardRanks[r]+“”+cardSuits[s];
如果((生成卡片).等于(卡片))
{
如果(r>=0&&r=8&&r=0&&r=8&&r1-JAVA getCardValue方法是一个返回类型函数,因此您应该在每种情况下处理返回值,即使它是FOR循环函数,因为它取决于条件
public static int getCardValue(String card) {
for (int s = 0; s != cardSuits.length; s++){
for (int r = 0; r != cardRanks.length; r++) {
String GeneratedCard = cardRanks[r] + " " + cardSuits[s];
if ((GeneratedCard).equals(card)) {
if (r >= 0 && r <= 8)
return r;// handling if condition
else if (r >= 8 && r <= 12)
return 10;// returning value else if condition
}else{
return 0;// returning value else condition
}
}
}
return 0;// returning value FOR loop condition
}
public static int getCardValue(字符串卡){
对于(int s=0;s!=cardSuits.length;s++){
for(int r=0;r!=cardRanks.length;r++){
字符串GeneratedCard=cardRanks[r]+“”+cardSuits[s];
如果((生成卡片).等于(卡片)){
if(r>=0&&r=8&&r基本上,Java正在检查if、else if和else语句,并确保该方法始终返回一个值。
所以你的代码看起来像这样
if A
if B
return
else if C
return
else
return
因此,Java可以看到,如果您的状态是a而不是B而不是C,则存在一个不返回值的逻辑路径
您可以通过在方法末尾放置一个默认返回来解决这个问题。
或者,如果您认为这是一个无法访问的状态,您可以抛出一个异常,因为只有这么多的卡
public static int getCardValue(String card)
{
for (int s = 0; s != cardSuits.length; s++)
// cardSuits is an array of strings
for (int r = 0; r != cardRanks.length; r++)// cardRanks is an array of
// strings
{
String GeneratedCard = cardRanks[r] + " " + cardSuits[s];
if ((GeneratedCard).equals(card))
{
if (r >= 0 && r <= 8) // number in array starts from 0(2) to 8(10)
{
return r;
}
else if (r >= 8 && r <= 12) // from 8(10) to 11(KING)
{
return 10;
}
}
else
return -1;
}
return -1;
}
public static int getCardValue(字符串卡)
{
对于(int s=0;s!=cardSuits.length;s++)
//cardSuits是一个字符串数组
for(int r=0;r!=cardRanks.length;r++)//cardRanks是
//弦
{
字符串GeneratedCard=cardRanks[r]+“”+cardSuits[s];
如果((生成卡片).等于(卡片))
{
如果(R>=0 & & r=8 & &)因为java不是C++,C++不是java.如果CasSuth.Stand=0,编译器就不会找到返回的SATION。现在你的问题太宽和/或不清楚了。如果<代码> CuxToass<代码>是空的,你会返回什么?如果< Cord> Cordrangs是空的,你会返回什么?如果<代码>,你会返回什么?等于(卡片)< /C> >总是正确的,但是内部<代码>如果语句总是错误的?在C++中,它不“只返回0而不是抱怨”。不应该依赖于任何特定的事件。java做分支分析C++不这样做,C++函数没有返回语句。它的返回值是未定义的,除非它是主函数,在这种情况下它返回0。
public static int getCardValue(String card)
{
for (int s = 0; s != cardSuits.length; s++)
// cardSuits is an array of strings
for (int r = 0; r != cardRanks.length; r++)// cardRanks is an array of
// strings
{
String GeneratedCard = cardRanks[r] + " " + cardSuits[s];
if ((GeneratedCard).equals(card))
{
if (r >= 0 && r <= 8) // number in array starts from 0(2) to 8(10)
{
return r;
}
else if (r >= 8 && r <= 12) // from 8(10) to 11(KING)
{
return 10;
}
}
else
return -1;
}
return -1;
}