我有这两种方法,Java在getNumEmails()中找不到“返回”。它们都在同一个类中,只有静态方法
private static int posSymbol=0;
private static int cont=0;
private static String text=null;
private static int getPosSymbol(){
posSymbol=text.indexOf('@',posSymbol);//if there is no symbol, returns -1
return posSymbol;
}
//Main calls this method
public static int getNumEmails(String completeText){
text=completeText;
while(posSymbol!=(-1)){
posSymbol=getPosSymbol();
if(posSymbol!=(-1)){
cont++;
posSymbol++;
}//close if
else{
return cont; //It seems that it doesn't reach the return always
}//close else
}//close while
}//close method
我知道解决方案很简单,删除“ else”并放入return cont;过了一会儿。但是我想知道为什么Java认为getNumEmails()可以结束而不返回任何内容。
最佳答案
我想这是关于编译器抱怨This method must return a result of type int
的问题。
尽管编译器有时可以确定某个函数是否将到达return语句,但情况并非总是如此。从数学上讲,不可能静态确定程序的动态行为。
在计算机科学中,这被称为“停止问题”。在一般情况下,无法确定程序是否终止。
因此,即使您可以确定该方法将始终到达您的return
语句之一,但编译器可能无法执行该操作。