可以在命令行运行java程序时加上程序的参数。
例子如下:
public class HelloWorld{
public static void main(String args[]){
System.out.println("temp=" + args[0]);
}
}
源代码截图:
解释一下: String[ ] args
该参数,是一个字符串数组,用来接收从命令行输入的参数
1. 参数之间用空格隔开
2. java解释器会自动处理,把用空格隔开的每一个参数通过args数组传递给买呢()方法。
3. 参数的下标从0开始,args[0]表示第一个参数,例如java HelloWorld 10 20 30
4.可以有多个空格,多个空格会被忽略。
(1)java读取命令行参数扩展阅读:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
2. 编写java程序,使用命令行参数读取两个整数N和K,使用牛顿迭代法求N的K阶方根
packagetest;
importjava.util.Scanner;
/**
*@author:郑旭东
*@company:通广电子
*@time:2014年10月14日下午3:03:35
*/
publicclassNewton{
staticintn;
staticinty;
staticdoubleres;
publicstaticdoublefunc(doublex){
doublek=1;
inti;
for(i=0;i<n;i++){
k*=x;
}
returnk-y;
}
publicstaticdoublefunc1(doublex){
doublek=1;
inti;
for(i=0;i<n-1;i++){
k*=x;
}
returnn*k;
}
publicstaticintNewtonn(doublex,doubleprecision,intmaxcyc){
doublex1,x0;
intk;
x0=x;
for(k=0;k<maxcyc;k++){
if(func1(x0)==0.0){
System.out.println("迭代过程中导数为0!");
return0;
}
x1=x0-func(x0)/func1(x0);
if(Math.abs(x1-x0)<precision||Math.abs(func(x1))<precision){
res=x1;
return1;
}
else
x0=x1;
}
System.out.println("迭代次数达到预期值!");
return0;
}
@SuppressWarnings({"resource"})
publicstaticvoidmain(Stringargs[]){
doublex,precision;
intmaxcyc;
System.out.println("请输入被开方数:");
Scannerscanner=newScanner(System.in);
y=scanner.nextInt();
System.out.println("请输入开方数:");
n=scanner.nextInt();
System.out.println("请输入初始迭代值:");
x=scanner.nextInt();
System.out.println("请输入最大迭代次数:");
maxcyc=scanner.nextInt();
System.out.println("请输入精度值(如0.00001):");
precision=scanner.nextDouble();
if(Newtonn(x,precision,maxcyc)==1){
System.out.println("结果为:"+res);
}
else
System.out.println("迭代失败!");
}
}
手打望采纳...
3. java main方法中的命令行参数
作用:
当你使用命令行的形式运行.class文件时,向你的类传递参数.
C:\>java
YourClassName
参数1
[参数2
参数3
....]
参数之间用一个空格作为间隔符.
String[] args 这个字符串数组是保存运行main函数时输入的参数的,例如main函数所在的类名为test
那么你在cmd运行
java
test
a b
c 时,args[0]
= a
,args[1]=b,
args[2]=c
你就可以在你的程序中调用你输入的这些变量了。
args[]不就是那个字符串This is a simple Java program吗?
-------完全不是的,你理解不对。这样好了,你在运行的时候加个参数,比如 java test XX。然后在你的main函数里面加这段话:System.out.println("arg is"+args[0]),然后看看输出是什么?
是不是这个:
This is a simple Java program
arg is XX
在运行时输入java test xx yy zz,并且在你的main函数里面加这段话:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然后看看输出是什么?
是不是:
This is a simple Java program
arg is xx yy zz
现在你理解了吗。。。
如果没关系,为什么程序中去掉String args[]会出现错误?
--------之所以去掉会出错在于,不带String args[]的main函数和带String args[]的main函数,本质上已经不是同一个函数了,java 本身不存在不带String args[]的main函数,所以当然出错了。
4. 如何识别java命令行编译参数
javac
用法:javac <选项> <源文件>
其中,可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖安装的扩展目录的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-d <目录> 指定存放生成的类文件的位置
使用-d参数,如类中定义了包,则编译时会自动生成包, 如:javac -d . helloworld.java
表示在当前目录下编译Helloworld 类。.表示当前目录,如helloword中定义有包,则在当前目录下生成包:
-encoding <编码> 指定源文件使用的字符编码
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
-version 版本信息
-help 输出标准选项的提要
-X 输出非标准选项的提要
-J<标志> 直接将 <标志> 传递给运行时系统
java
用法: java [-选项] 类 [参数...]
(执行一个类)
或者 java [-选项] -jar jar文件 [参数...]
(执行一个jar文件)
其中,可能的选项包括:
-client 选择 "client" VM(ginger547:应该是指Virtual Machine)
-server 选择 "server" VM
-hotspot 与 "client" VM同义 [不赞成]
默认情况的VM是client.
-cp <一个文件夹和zip/jar文件组成的类搜索路径>
-classpath <一个文件夹和zip/jar文件组成的类搜索路径>
一个由文件夹,JAR压缩文件,或者ZIP压缩文件组成的用来搜索类的列表
-D<名字>=<值>
设置一个系统属性
-verbose[:class|gc|jni]
使详细输出变的可用
-version 打印产品版本然后退出
-version:<值>
只运行指定版本
-showversion 打印产品版本后继续
-jre-restrict-search | -jre-no-restrict-search
在版本搜索的时候,包含/排除用户私人的JRE
-? -help 打印帮助信息
-X 打印非标准选项帮助
-ea[:<包名>...|:<类名>]
-enableassertions[:<包名>...|:<类名>]
使断言可用
-da[:<包名>...|:<类名>]
-disableassertions[:<包名>...|:<类名>]
是断言不可用
-esa | -enablesystemassertions
使系统级断言可用
-dsa | -disablesystemassertions
使系统级断言不可用
-agentlib:<库名>[=<选项>]
加载本地代理库<库名>,例如. -agentlib:hprof
同时可查看, -agentlib:jdwp=help和 -agentlib:hprof=help
-agentpath:<路径名>[=<选项>]
通过全路径名来加载本地代理库
-javaagent:<jar路径>[=<选项>]
加载Java编程语言代理,可查看 java.lang.instrument
5. JAVA如何从命令行读入一个String
比如你现在有一个可以运行的class文件叫做A.class。那么在命令行中可以这样执行这个程序:
java A arg
其中arg是A需要的参数。那么A是怎么得到这个arg的呢。基本上是这样的:
public static void main(String[] args)
{
if(args.length > 0)
{
String str = arg[0];
}
}
这是在A.java中的main函数,这里只是得到了第一个参数的做法,如果想得到更多的参数,只要做一个简单的循环遍例这个数组args就可以了。
6. java 命令行 传递参数
不要在Java中处理“<”(重定向)符号,那是留给操作系统来处理的。
要想将将输入从定向文件传递给Java程序,可采用如下办法。
(1)首先制作批文件(Windows下为.bat文件,Linux/UNIX下为.sh文件)。给你作个例子(以Windows为例,制作一个名称为start.bat的文件):
@set/p A= >nul
@set/p B= >nul
@set/p C= >nul
@set/p D= >nul
@java 您的java启动类名 %A% %B% %C% %D%
@set/p A= <nul
@set/p B= <nul
@set/p C= <nul
@set/p D= <nul
这里只有四个参数,您可以添加更多的参数。
之后编写输入重定向文件(in.txt),内容范例如下:
para1Value
para2Value
para3Value
...
在执行的时候,使用格式如下:
start.bat < in.txt
这时,您的Java启动类.main才能接收到从定向文件里的参数。
建议在批文件中可以多设一些参数,即使输入重定向文件内提供的参数值数量不足也没有关系,操作系统不会传递没无值参数。
7. java程序如何获取命令行参数
args[],中括号里0是第一个命令行参数,1是第二个,以此类推。
8. java如何从命令行输入和输出数据
import java.util.*;
import java.io.*;
import javax.swing.JOptionPane;
public class SysIn
{
public static void main(String [] args)
{
【java.util包中的Scanner类】
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一串字符:");
String firStr = sc.next();
System.out.println("你输入的是" +firStr);
注意事项:next()读取一个字符串,该字符串在一个空白符之前结束
(8)java读取命令行参数扩展阅读
其他java从命令行输入和输出数据
1、【java.io包中的BufferedReader类】
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入第二串字符:");
String secStr=null;
try
{
secStr=bf.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("你输入的是" + secStr);
注意事项:nextByte()读取一个byte类型整数--其他类型整数类推
2、【调用 javax.swing.JOptionPane 类】
String jop = JOptionPane.showInputDialog
(null,"Please Input:","InputDialog",JOptionPane,QUESTION_MESSAGE);
System.out.println("你输入的第三串字符:“ + jop);
}
}
注意事项:nextLine()读取一行文本
9. JAVA在命令行接受参数进行运算的问题
import java.util.*;
public class Test{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1=in.nextInt();
System.out.println("请输入第二个数:");
int num2=in.nextInt();
int sum=num1+num2;
System.out.println(("输入的值的和为:"+sum);
}
}