package chapter07;
public class Houazi {
public static void main(String[] args) {
B t1 = new B();
int day = 1;
int peachNum = t1.peach(day);
if(peachNum != -1){
System.out.print("第x天有"+peachNum+"个桃子");
}
}
}
class B{
public int peach(int day){
if(day==10){//第十天只有一颗桃
return 1;
}else if(day>=1 && day<=9){
return (peach(day+1)+1)*2;
}else{
System.out.print("day在1-10");
return -1;
}
}
}
VS报错:Exception in thread "main" java.lang.NoSuchMethodError: chapter07.B.peach(I)I
at chapter07.Houazi.main(Houazi.java:8)
搜索了很久不知道怎么解决
望采纳。。。
我看了下你的代码,没有问题,唯一可能的问题是VSCode,识别不出你的class B。
你这样,你把class B代码移动到另一个B.java的类文件里面,然后在Houazi.java的main方法中调用并初始化class B,即可。
这个错误是因为 B 类中的 peach 方法在递归调用时调用了自身而导致的。 在调用 peach 方法时编译器会抛出 java.lang.NoSuchMethodError 异常。
可以修改方法 peach 通过设置一个变量来记录自身递归次数来解决问题:
class B{
public int peach(int day){
int result = 0;
if(day==10){//第十天只有一颗桃
return 1;
}else if(day>=1 && day<=9){
for(int i=1;i<=day;i++){
result = (result+1)*2;
}
return result;
}else{
System.out.print("day在1-10");
return -1;
}
}
}
这样就可以避免自身递归调用导致的错误。