qmoup
qmoup
采纳率0%
2017-11-22 23:28

在main中调用两个类的对象,其中一个对象的方法包涵了另一个对象的参数,参数标红怎么办呢?

在写一个井字棋游戏,一共三个类:棋盘Chessboard,人Player, 主类Main.
棋盘是一个二维数组,里面有:setarrayvalue(), getarrayvalue(),checkwin(),checkfull()等方法。
1)在Main类调用了(Player player和Chessboard ff),想使用ff.getarrayvalue(m,n),并判断它是否等于1,但是这里m 和n 不对, 应该怎么做?(图一代码标红处)
2)Main类中,我只new了一个Player, 这样可以吗?有的人是new 两个player,并赋值,但是我不知道怎么赋值使用它:。。。
3)棋盘大小,扩展成可以从键盘输入数值,哪里不正确呢?(图二,注释处)
4)如何确保输入数值永远不超过棋盘范围,且只是int,且输入不满足条件的话,能够一直提醒用户重新输入?(图3Player类里的一个方法)注释处,为什么不对呢? 如何确保输入是int,不是字母呢?
图片说明
图片说明
图片说明

-------------------------------------
问题已解决,添加了一个内部类,返回了m,n。 图片代码不全,见谅!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答

  • Tian_zhishang 天之上有什么 4年前

    1、你的arrayvalue值是0,可以写ff.arrvalue但不能写ff.arrayvalue(m,n),因为根本没有名字为arrayvalue,参数为m,n的方法,怎么调用?
    2、player类不贴出来那就默认按和palyer1一样复制呗
    3、你这个真的是,你方法名第二个单词首字母小写我就不说了,变量名、方法名和类名的命名不规范我也不说了,只是你在方法里重新创建了
    一个field[][]局部变量然后你告诉我你还想用这个局部变量设置棋盘大小?棋盘类开始不就有吗,还要重新定义一个局部变量干嘛?
    4、hasNextInt()判断是不是整数,你的方法有问题,getfieldsize()返回固定值3,然后getarrayvalue又重新设置了field数组的范围,不知道你写的判断
    有什么用,如果想不越界,要么根据固定值3判断,要么根据m的长度判断,这不是井字棋吗,输入m就行了,n和m的长度难道不相等?

    点赞 1 评论 复制链接分享
  • yy339452689 善良勤劳勇敢而又聪明的老杨 4年前

    你这个arrayvalue只是chessboard的一个属性,不是方法

    点赞 1 评论 复制链接分享
  • qq_34547022 小牛宝 4年前

    你的判断语句ff.arrayvalue后面跟了一个大括号,但ff.arrayvalue并不是一个函数而直接就是一个值,你需要对ff.arrayvalue进行加减乘除运算,才能达到你想要的结果,你是新手吧,好低级的错误

    点赞 1 评论 复制链接分享
  • qq_36366291 qq_36366291 4年前

    不见arrayValue方法

    点赞 1 评论 复制链接分享
  • u014034934 逗比123号 4年前

    根本就没有arrayvalue这个方法么,还有括号的问题

    点赞 1 评论 复制链接分享
  • wodeai258 wodeai258 4年前

    play方法里的m跟n有定义么?没看见你定义就直接使用了

    点赞 1 评论 复制链接分享
  • u011099093 Jess_eagle 4年前

    1.首先从面相对象的角度,你的playerInput方法到底是做什么的,是玩家角色落子的坐标,还是棋盘角色定义棋盘的大小,如果是后者,不应该是固定大小,程序开始时初始化就可以了。如果是前者,该方法应该定义在Player类中,并且给Player设置m,n属性表示当前落子位置,也可以定义一个数组保存Player每一步落子的位置。在
    2.用户输入时可定义m,n类型为Integer,然后用户输入后判断是否为null,如果是null,可递归调用PlayerInput方法。

    点赞 1 评论 复制链接分享
  • yujiaao COCO_AS 4年前

    你用的全角括号吧, 重敲一下就好了。

    点赞 1 评论 复制链接分享
  • qmoup qmoup 4年前

    谢谢大家!确实是新手,把完整代码放上来了,Main里面的arryvalue()改了,手误,确实没有arrvalue(), 应该是getarrayvalue().抱歉!
    但是问题还是那个问题。。。
    Main--play(): if (ff.checkwin()==true) {
    if(ff.getarrayvalue(m,n)==1) { 如果把它改成if(ff.arrayvalue==1) 程序可以运行,但是无法checkwin之类的

                      else if(ff.getarrayvalue(m,n)==2) { 如果把它改成if(ff.arrayvalue==2)  程序可以运行,但是无法checkwin之类的
                                    问题在m,n,还有这个getarrayvalue()上,不知该怎么改?
    

    playerinput(): player选位置,改变在数组中对应位置的值(arrayvalue),奇数次,player cmd 显示为X,数组中的值(arrayvalue)为1,
    偶数次,player显示O,值为2.

    点赞 评论 复制链接分享

相关推荐