一、cmd下运行java文件
1.命令格式
javac xxx.java 编译java格式的文件成class格式的文件,compile编译
java xxx 运行xxx的class文件,不能写.class后缀,否则错
2.例子
- 写一份java文件,找到存储的路径为"D:\Mystring\eclipse_project\Hello\src"
public class Main{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
- 在cmd中使用cd命令到达那个位置,然后开始编译执行。
D:\>cd D:\Mystring\eclipse_project\Hello\src
D:\Mystring\eclipse_project\Hello\src>javac Main.java
D:\Mystring\eclipse_project\Hello\src>java Main
Hello World
3.找不到或无法加载主类
把package XXX;
去掉。
二、输出cmd下的参数
1.命令格式
在java
命令下同时写上参数,而不是在javac
命令。javac
命令是负责编译生成class文件,java
命令才负责执行和传入参数。
java xxx hello world 123
java xxx "hello world 123"
一般是用前者。
2.例子1:以格式1的方式
public class SumOfArgs {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<args.length;i++)
{
System.out.print(args[i]);
}
}
}
D:\Eclipse\MyJavaCode\SumOfArgs\src>javac SumOfArgs.java
D:\Eclipse\MyJavaCode\SumOfArgs\src>java SumOfArgs hello world 123
helloworld123
可以看到结果是省去了中间的空格。因为它将hello看作args[0],world看作args[1],123看作args[2],空格作为中断符。
3.例子2:以格式2的方式
public class SumOfArgs {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(args[0]);
}
}
D:\Eclipse\MyJavaCode\SumOfArgs\src>javac SumOfArgs.java
D:\Eclipse\MyJavaCode\SumOfArgs\src>java SumOfArgs "hello world 123"
hello world 123
这样它就将"hello world 123"作为一整个字符串,而不会拆分。
三、例题
public class SumOfArgs {
public static void main(String[] args) {
int sum=0;
for(int i=0;i<args.length;i++)
{
boolean isNum=true;
for(int j=0;j<args[i].length();j++)
{
if(args[i].charAt(0)=='-') continue;
if(args[i].charAt(j)<48 || args[i].charAt(j)>57)
{
isNum=false;
break;
}
}
if(isNum) sum+=Integer.parseInt(args[i]);
}
System.out.print(sum);
}
}
D:\Eclipse\MyJavaCode\SumOfArgs\src>javac SumOfArgs.java
D:\Eclipse\MyJavaCode\SumOfArgs\src>java SumOfArgs hello 123 hello123 -23 45
145