java--在命令行模式下与程序互动

原创 2012年03月26日 07:41:01

A close mouth catches no flies. 病从口入

在我刚接触java的时候,总是采用对话框来实现数据的输入和程序实现互动,以至于有一次期末java考试的时候,自己习惯于采用对话框编写程序,写出来的程序很不实用,到处都是框框,虽然功能上倒是实现了,但总归是一段不堪回首的往事,糗事一桩。

从互动中来学习一门语言,一直也是我很喜欢的第一种方式,很多人建议学习程序之前,要先能看到程序执行结果,要可以对程序输入一些数据来进行互动,来看看不同输入产生什么样的结果,这也是我学习程序设计的时候,我的老师所推荐的一种方式,个人也很认同这种方式,就从这里开始吧

言归正传,说说java程序在命令行模式下与程序互动,在java中,在命令行模式下输入值,个人认为常用的方法有三种,

一种是直接在运行程序时,在命令行后面直接添加所要输入的字符串,注意,在这是字符串,来看代码

Java代码 复制代码
  1. public class TerDemo1{ 
  2.     public static void main(String args[]){ 
  3.         for(int i=0;i<args.length;i++){ 
  4.             System.out.println(args[i]); 
  5.         } 
  6.     } 

图4-1是我的编译,运行过程,结果


    
                                 图4-1后缀参数编译运行过程,结果

  对代码做一下解释,args.length的意思是取得字符数组args里面的元素个数,在它运行时我输入了两个参数,一个hello,一个world,所以代码的打印语句供共行了两次,输出的结果见图4-1

Java代码 复制代码
  1. 刚才在dos界面下进行编译程序的是否,偶然敲了下tab键,发现可以实现文件名的补全,用过linux的人,应该知道在linux的Terminal中,tab见具有补全的功能, 
  2. dos下竟然也有,这还真是俺第一次发现 

第二种  使用Scanner类

   在javase6中,可以使用java.util.Scanner类取得用户的输入,这个类是比较人性化的,来看看它的使用吧,先看代码

Java代码 复制代码
  1. import java.util.Scanner; 
  2. public class ScanDemo{ 
  3.     public static void main(String[] args){ 
  4.         Scanner scan = new Scanner(System.in); 
  5.         String str = scan.next(); 
  6.         System.out.println(str); 
  7.          
  8.     } 

  图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解决了这个问题,这个类有些复杂,不过,不用担心,从目前来看,会用就行,理解,慢慢就可以实现的

  话不多说,先看代码吧

Java代码 复制代码
  1. import java.io.*; 
  2. public class BufferedDemo{ 
  3.     public static void main(String[] args) throws IOException{ 
  4.         BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
  5.         String str = bf.readLine(); 
  6.         System.out.println(str); 
  7.     } 

    图4-3BufferedDemo的编译运行结果

  
    

   在代码中由于使用BufferedReader的方法readLine,就必须要处理java.io.Exception异常,异常处理机制是javase为开发人员捕捉可能发生的错误提供的机制,现在,所有异常一律抛出,不做处理(throws IOException),嗯,这个BufferedReader对象的建立过程比较麻烦,这样理解吧,你可以认为,他是在一个水桶上接了一个管子,在这个管子上,它又接了另一根管子,目的是使流出的水,满足我们的要求,目前,先这么理解吧

   看结果,会发现,这次输入了hello world,输入是hello world,空格保留

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++中嵌入python程序——命令行模式

C++中嵌入python程序——命令行模式最近写个程序,由于需要使用C++框架,但是一部分功能是基于python的,所以需要利用C++调用python程序。虽然你知道python有相关的API接口,但...

java程序命令行下的执行

  • 2011-12-21 00:33
  • 48KB
  • 下载

Android,java发送intent,native c/c++发送intent, am命令行执行程序。

先来看看google如何表述的:An intent is an abstract description of an operation to be performed. It can be use...

熟练使用命令行工具开发Java程序

熟练使用命令行工具开发Java程序
  • samxx8
  • samxx8
  • 2011-04-05 22:12
  • 1172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)