A close mouth catches
no flies.
病从口入
在我刚接触java的时候,总是采用对话框来实现数据的输入和程序实现互动,以至于有一次期末java考试的时候,自己习惯于采用对话框编写程序,写出来的程序很不实用,到处都是框框,虽然功能上倒是实现了,但总归是一段不堪回首的往事,糗事一桩。
从互动中来学习一门语言,一直也是我很喜欢的第一种方式,很多人建议学习程序之前,要先能看到程序执行结果,要可以对程序输入一些数据来进行互动,来看看不同输入产生什么样的结果,这也是我学习程序设计的时候,我的老师所推荐的一种方式,个人也很认同这种方式,就从这里开始吧
言归正传,说说java程序在命令行模式下与程序互动,在java中,在命令行模式下输入值,个人认为常用的方法有三种,
一种是直接在运行程序时,在命令行后面直接添加所要输入的字符串,注意,在这是字符串,来看代码
public class TerDemo1{
public static void main(String args[]){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
图4-1是我的编译,运行过程,结果
图4-1后缀参数编译运行过程,结果
对代码做一下解释,args.length的意思是取得字符数组args里面的元素个数,在它运行时我输入了两个参数,一个hello,一个world,所以代码的打印语句供共行了两次,输出的结果见图4-1
刚才在dos界面下进行编译程序的是否,偶然敲了下tab键,发现可以实现文件名的补全,用过linux的人,应该知道在linux的Terminal中,tab见具有补全的功能,
dos下竟然也有,这还真是俺第一次发现
第二种 使用Scanner类
在javase6中,可以使用java.util.Scanner类取得用户的输入,这个类是比较人性化的,来看看它的使用吧,先看代码
import java.util.Scanner;
public class ScanDemo{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String str = scan.next();
System.out.println(str);
}
}
图4-2是Scanner类型的编译运行结果
图4-2 ScanDemo的编译运行结果
在代码中,由于引入的Scanner类不在默认引入的包之内,所以必须要显式的引入,new表示要新建一个类,而在新建的Scanner类中需要有一个System.in的对象,可以这样来理解,System.in实现了数据的接收,是单纯的接收,而Scanner是对它进行了后期的处理,next方法可以看作是一个筛子,它使得接收的数据比较明确,只接受字符串,或者接收的东西当作字符串来处理,当然Scanner还有其它的方法来实现不同类型数据的输入,具体别的输入,您可以查询api,来做做变换,javase的api很重要,学会查询api是非常非常重要的能力,具体如何使用api,可以百度或者谷歌下
在上面的图里面你会发现,我输入了hello world,却只是输出了hello,这是为什么呢?这是因为Scanner把空格也作为了输入的结束符,所以,我们只看到了hello,可是使用空格的地方有很多啊,总不能每次都一气写完了再说吧?这怎么行!!!,第三中方法解决了这个问题
第三种 使用BufferedReader类
对于Scanner类而言,输入的结束符,依次是空格符,tab,和enter键,可是只是一个空格就结束输入,这确实让人难以忍受,BufferedReader解决了这个问题,这个类有些复杂,不过,不用担心,从目前来看,会用就行,理解,慢慢就可以实现的
话不多说,先看代码吧
import java.io.*;
public class BufferedDemo{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
System.out.println(str);
}
}
图4-3BufferedDemo的编译运行结果
在代码中由于使用BufferedReader的方法readLine,就必须要处理java.io.Exception异常,异常处理机制是javase为开发人员捕捉可能发生的错误提供的机制,现在,所有异常一律抛出,不做处理(throws IOException),嗯,这个BufferedReader对象的建立过程比较麻烦,这样理解吧,你可以认为,他是在一个水桶上接了一个管子,在这个管子上,它又接了另一根管子,目的是使流出的水,满足我们的要求,目前,先这么理解吧
看结果,会发现,这次输入了hello world,输入是hello world,空格保留
- 大小: 2.5 KB
- 大小: 2.3 KB
- 大小: 2.5 KB
分享到:
相关推荐
基于java的开发源码-命令行进度条 JCmdLineProgess.zip 基于java的开发源码-命令行进度条 JCmdLineProgess.zip 基于java的开发源码-命令行进度条 JCmdLineProgess.zip 基于java的开发源码-命令行进度条 ...
基于java的开发源码-命令行解析器 JOpt Simple.zip 基于java的开发源码-命令行解析器 JOpt Simple.zip 基于java的开发源码-命令行解析器 JOpt Simple.zip 基于java的开发源码-命令行解析器 JOpt Simple.zip 基于java...
命令行状态下编写Java程序 注意: Java源代码文件的扩展名必须是.java,文件名必须与公共类名完全相同。 2. 编译Java程序 可执行文件javac.exe位于Java安装目录的bin子目录中,称为Java编译器 (Java Compiler——...
最新的commons-cli,解析命令行参数,程序员必备,不要问我是谁,我叫雷锋,积分太多了,改了一下积分
一、命令行传参 二、用命令行编译.java文件 三、用命令行运行.classs文件 四、命令行传参操作
jenkins-cli.jar 命令行
编程大力哥java视频 - 如何使用命令行方式运行java程序,这个视频介绍了如何使用windows自带的命令行工具来运行java程序
java语法 命令行参数 马克-to-win java视频 commandLine
java语法 命令行参数 马克-to-win java视频 commandLine
java语法 命令行参数 马克-to-win java视频 commandLine
用java写的命令行下的五子棋代码和一个清屏的动态链接库,在五子棋代码里通过jni调用来实现清屏。 五子棋算法是参考的这个博客http://blog.163.com/liuliang_nice/blog/static/10274620200741201527290/ 文章提到的...
JAVA程序命令行下的执行 IED用惯了,基础都快忘记了 javac 先不说了,环境变量里面设置对了基本没什么问题。关键是java这个命令 java -classpath .class的类路径(如果是包的话,需要指定到包上面的路径);引用的类路径...
google-java-format是重新格式化Java源代码以符合。 使用格式化程序 从命令行 并使用以下命令运行它: java -jar /path/to/google-java-format-1.9-all-deps.jar <options> [files...] 格式化程序可以作用于整个...
基于java的开发源码-命令行处理类库 JArgs.zip 基于java的开发源码-命令行处理类库 JArgs.zip 基于java的开发源码-命令行处理类库 JArgs.zip 基于java的开发源码-命令行处理类库 JArgs.zip 基于java的开发源码-...
使用构建工具Gradle的Java命令行界面应用程序基础 要求 您需要在系统中安装JDK 11和gradle 6.6.1,所有更高版本和一些旧版本都可以使用。 为了确保您拥有所有必要的命令,请运行以下命令,如果生成一些类似的输出,...
jd-cli-命令行Java反编译器 jd-cli是围绕 Java Decompiler项目的简单命令行包装。 下载 在找到最新信息。 要求 在版本8或更高版本(对于1.0.0及更高版本)中需要而对于较旧的版本则需要Java 6。 用法-命令行 您可以...
入门欢迎来到VS Code ...资料夹结构默认情况下,工作区包含两个文件夹,其中: src :用于维护源的文件夹lib :用于维护依赖关系的文件夹依赖管理JAVA DEPENDENCIES视图使您可以管理依赖项。 可以在找到更多详细信息。
dos命令测试java jar文件 命令行下运行JUnit测试 命令运行java
DOS命令行模式下编译JAVA文件或工程
Java 命令行解析器 JOpt Simple