java零基础入门教程实例5



java零基础入门教程实例5。生活就象海洋,只有意志坚强的人,才能到达彼岸。——马克思

Java的命令行输入语句:
使用Scanner取得输入:
命令行下输入数据到程序中的时候,可以使用标准输入串对象System.in。然而实际上很少直接使用它,因为System.in对象提供的read()方法,是从输入串中取得一个字节的数据,并返回该字节的整数值,但通常你要取得的输入会是一个字符串,或一组数字。因此,System.in对象的read()方法一次只读入一个字节数据的方式并不适合。
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.

Scanner reader=new Scanner(System.in);

然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:
next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
可以使用java.util.Scanner类取得使用者的输入,Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象
import java.util.Scanner;
public class Demo
{
public static void main(String[] args)
{
System.out.print(“请输入你的大名:”);
Scanner reader=new Scanner(System.in);
System.out.println(“你好:”+reader.next());
}
}
输入:hackjam
输出:”你好:hackjam”
输入:1432
输出:”你好:1432″
可以看出是按原文返回,但是,如果中间有空格的话是按照第一个空格前的返回。
又一个例子:
import java.util.Scanner;
public class Demo
{
public static void main(String[] args)
{
System.out.print(“请输入一个整数,否则将错误:”);
Scanner reader=new Scanner(System.in);
System.out.println(“你输入的是:”+reader.nextInt());
}
}
输入:1234
输出:
Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Demo.main(Demo.java:8)
可见错误了
尝试输入小数,也错误。
自己举一反三吧,就不一一举例了。
但是Scanner取得数据不能有空格,有空格就不能取得完整字符串,因为Scanner取得输入的依据是空格符,按下空格键、Tab键或是Enter键,Scanner就会返回前一个输入,所以常常带来不便。因为我有时需要的是输入一个包含空格符的字符串,我需要完整的字符串。可以使用java.io.BufferedReader类取得输入,这个方法也是在J2SE1.4或之前版本下取得使用者输入的方式。
BufferedReader取得输入:
BufferedReader类是java.io包中所提供的一个类,所以使用这个类时必须使用import告诉编译器这个类位于java.io包下。
使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception)。异常处理机制是Java为程序员处理程序中可能发生错误所提供的机制,现阶段处理IOException的方法是在main()函数中加上throws IOException,具体的异常处理方法我将在以后详细介绍。
BufferedReader在构建时接受一个java.io.Reader对象,在读取标准输入串时,你可以使用java.io.InputStreamReader,它继承了Reader类。可以使用以下方法为标准输入串建立缓冲区对象(何为缓冲区:缓冲区是为暂时置放输出或输入资料的内存。):
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in));
上述中,建立了一个bufferedReader对象,而这个对象又接受一个InputStreamReader对象,这个对象使用了System.in对象,是否有一种一层又一层的感觉,对,没错,程序代码就是有层次感,嘿嘿。
按通俗的说,就是增加了一个BufferedReader工具,这个工具还要加上一个InputStreamReader工具配合使用,而InputStreamReader工具使用了System.in工具。
如果还不理解,照抄行了。
例子:
import java.io.*;
public class Demo
{
public static void main(String[] args) throws IOException
{
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(System.in));
System.out.print(“请输入一段本文:”);
String text = bufferedReader.readLine();
System.out.println(“你输入的文字:”+text);
}
}
编译后,输入:”java is good”
输出:”java is good”
可见可以输出完整字符串了!
判断语句初尝鲜:
在生活中,我们常常要想如果xxx,那么xxx。如你打我一巴掌,我便还你一巴掌,呵呵。如果天要下雨,那么先收衣服…等等的实例。在程序中也有逻辑判断:
Java中的逻辑判断语句之一:
if-else语句,该语句结构一般为:
if 表达式(判断条件)
{
语句1;
}
例子:
import java.util.Scanner;
public class Demo
{
public static void main(String[] args)
{
System.out.print(“请输入密码:”);
Scanner reader=new Scanner(System.in);
String pass=reader.next();
if(pass.equals(“admin888″))
{
System.out.print(“对了!”);
}
}
}
因为pass是一个对象,不能用==
==是比较内存地址的。
小提示:
值类型是存储在内存中的堆栈,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。