注册 登录
编程论坛 JAVA论坛

各位,我有个小问题,不知道为什么;新人

crf1205 发布于 2016-11-28 23:24, 1661 次点击
程序代码:
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中的内容呢?
2 回复
#2
GrayJerry2016-12-01 17:31
insertInUSB 这个方法的语句块一句都没执行,你可以debug跟下
#3
andymqq2016-12-04 11:29
回复 楼主 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++;
        }
    }
}

加油,小伙
1