实现这个功能要用到我们的public static void main(String[] args) 主函数
我们要用到main(String[] args) 函数中的string类型的数组args
我们可以自己传参然后像cmd里面输入相应的命令就可以得到你想要的的结果,比如:ping命令之类的
看一下我写的代码,我是小白
public static void main(String[] args) throws Exception {
//通过调用main函数里面的args数组来实现
if (args[0].equals("-f")) {
String printClsName = "com.L1_5.ConsolePrint";
String nineClsName = "com.L1_3.NineCenter";
int num = 8;
IPrint p1 = (IPrint) Factory.getPrintObject(printClsName);
Factory.getINineObject(nineClsName, num, p1).print(num);
}
if (args[0].equals("-p")) {
System.out.println("彩蛋");
}
}
这个是在cmd中先在你的main方法中编译,代码javac 类名.java
然后在执行java 类名 -f(这后面就看你怎么写了,可以参考我的)
在这里会有问题,编译好了,运行找不到main方法
我给大家找到了解决方法
注意:编译的时候还是在你的源文件那里编译
当然了,错误常伴吾身,接下来又会出现错误,因为我在这里面调用了其它包下的类方法,所以又会报错,我又给大家找到了解决的方法
解决方法
关键错在:你进去包目录下编译文件了,编译有包的源文件,应该在包的上一个目录去编译源文件,而且要带包结构
举个例子:源文件目录结构是 src/carSystem/Car.java和src/carSystem/Rent.java,这两个文件的包是carSystem,而Rent.java有被Car.java引用的public类,所以,这时要先编译 javac carSystem/Rent.java,然后再 javac carSystem/Car.java
原因分析:你进入包目录下去javac Car.java的时候,因为这个java文件和Rent.java都是package carSystem的,所以他会在当前目录下去找carSystem目录下面的Rent这个类,然而,你的Rent.class是被编译到了当前CarSystem目录了,并不是当前目录的carSystem下。
按照上述方法还是会出现问题
然后使用 -cp . 把当前目录包括进去
结果:大功告成