新学了java,编了一个猴子选大王题,但是一直无法通过 - 爱问答

(爱问答)

新学了java,编了一个猴子选大王题,但是一直无法通过

这个程序是c语言改的,c语言是能够运行的,但是改编成java运行后一直提示错误,编译器没有提示语言有问题,而逻辑也不该有问题,毕竟c语言能运行。求大神帮忙,告诉我哪里出了问题,感谢。

import java.util.Scanner;

class EX{

private int n;

private int m;

private int k;

private int[] list;

Scanner ic=new Scanner(System.in);

void gain(int nn){

this.n=nn;}

void gaik(int kk){

this.k=kk;}

void gaim(int mm){

this.m=mm;}

void gailist(int i,int x){

this.list[i]=x;}

int putlist(int i){

return list[i];}

int putn(){

return n;}

int putk(){

return k;}

int putm(){

return m;}

void ilist(){

this.list=new int[putn()];}

}

 

class fuzinmk extends EX{

int nn,kk,mm;

 

void fuzin(){

do{

System.out.print("猴子个数n:");

nn=ic.nextInt();

if (nn<=0) System.out.println("'n'error!'n'no<='0',请重新输入!");

}while(nn<=0);

gain(nn);}

 

void fuzim(){

do{

System.out.print("报数值m:");

mm=ic.nextInt();

if (mm<=0) System.out.println("'m'error!'m'no<='0',请重新输入!");

}while(mm<=0);

gaim(mm);}

 

void fuzik(){

do{

System.out.print("第一个猴子编号k:");

kk=ic.nextInt();kk--;

if (kk>=putn()) System.out.println("'k'error!'k'no>'n',请重新输入!");

if (kk<0) System.out.println("'k'error!'k'no<='0',请重新输入!");

}while(kk>=putn()||kk<0);

gaik(kk);}

 

void fuzi(){

ilist();

for(int i=0;i<putn();i++)

gailist(i,i+1);}

}

 

class hou extends EX{

 

int houwang(){

chuju(putm());

if (putn()!=1) houwang();

return putlist(0);}

 

void chuju(int m){//计算方法

while(putn()<m)

m=m-putn();

gaik(m+putk()-1);

if (putk()>=putn()) gaik(putk()-putn());

System.out.println(putlist(putk())+"号猴子出圈");

for (int i=putk();i<putn();i++)

gailist(i,putlist(i+1));

gain(putn()-1);}

}

 

public class UnderMyHz{

public static void main(String[] args){

fuzinmk stu=new fuzinmk();

hou cun=new hou();

stu.fuzin();

stu.fuzik();

stu.fuzim();

stu.fuzi();

System.out.print(cun.houwang()+"号猴子为猴王");

}}


你的程序写得如此晦涩,很难调试

你的错当然很明显,是在运行

    int putlist(int i) {      

        return list[i ];

    }

时,i为-1了,所以报错

一.你的程序标识符不规范

类似

int putn(){

return n;}

应该是getn,你是得到变量的值而非设置,设置的话也是set不是put

二,程序看上去是个简单的约瑟夫环,不用定义这么多函数(你可以了解下模块化设计的要点

三.若是C程序改写的,你可以把c程序放上来,若原来程序没有问题,我很快可以帮你修改好的


相关标签:java

下一篇:cs8如何使用图片控制fl播放

上一篇:帮找一下字体,谢谢!在线等

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?