| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
免费IT实战开发视频教程合集分享千里之行 始于足下
共有 665 人关注过本帖
标题:各位,我有个小问题,不知道为什么;新人
只看楼主 加入收藏
crf1205
Rank: 2
等 级:论坛游民
威 望:1
帖 子:11
专家分:15
注 册:2016-11-28
结帖率:0
  已结贴   问题点数:20  回复次数:2   
各位,我有个小问题,不知道为什么;新人
程序代码:
public class USBConsole
{
    public static void main(String[] args)
    {
        IUSBable m = new mouse();
        USBConsoleTable.insertInUSB(m);
        IUSBable k = new keyboard();
        USBConsoleTable.insertInUSB(k);
        USBConsoleTable.insertInUSB(new keyboard());
    }
}
interface IUSBable
{
    void dosomth();
}

class mouse implements IUSBable
{   
    public void dosomth()
    {
         System.out.println("tic...tic...mouse working.");
    }
}

class keyboard implements IUSBable
{
    public void dosomth()
    {
        System.out.println("da....da...da..keyboard working.");
    }
}

class USBConsoleTable
{   
    private static IUSBable[] USBss = new IUSBable[6];
    private static int indx = 0;
    static void insertInUSB(IUSBable USBs)
    {   
        if (indx > USBss.length)
         {   
            System.out.println("USB插口不足");
             return;
         }
        else if (USBss[indx] != null)
        {
            USBss[indx]=USBs;
            USBs.dosomth();
            indx++;
        }
    }
}

这个是我在自学的时候写的一个练习的代码,但是为什么没有输出println中的内容呢?
搜索更多相关主题的帖子: keyboard  color  
2016-11-28 23:24
GrayJerry
Rank: 4
等 级:贵宾
威 望:10
帖 子:59
专家分:233
注 册:2015-10-20
  得分:10 
insertInUSB 这个方法的语句块一句都没执行,你可以debug跟下
2016-12-01 17:31
andymqq
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:25
注 册:2016-12-4
  得分:10 
回复 楼主 crf1205
作为初学者,上来就学设计模式,个人觉得起步有点高,你的代码里涉及到很多java的基础错误,建议从基础看起,基础牢固了,实现就没有问题
言归正传,你的这段代码,应该是设计模式中的工厂方法模式,下面指出几点错误,以下是我修正的你的代码,你对照看一下
public class UsbFactory {
    private static UsbInterface[] USBss = new UsbInterface[6];//初始化数组长度,数组的每个元素为null
    private static int indx = 0;
    public static void insertInUSB(UsbInterface USBs)
    {   
        if(indx > USBss.length){//此处,数组角标从0开始,当indx == 6时,会报角标越界异常,正确代码:indx > USBss.length-1
            System.out.println("USB插口不足");
             return;
         }else if (USBss[indx] != null){//此处,首先逻辑就是错误的,你的逻辑是当有空USB接口时,就插入一个mouse或kebord,正确代码:USBss[indx] == null
            USBss[indx]=USBs;
            USBs.getUsb();
            indx++;
        }
    }
}

加油,小伙
2016-12-04 11:29







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024960 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved