JAVA 用户操作

1.java程序的入口,main()方法——public static void main(String[] args){}

1)public修饰符:java类由JVM调用,为了让JVM可以自由的调用这个main()方法,所以使用public修饰符。

2)static修饰符:JVM调用这个主方法时,不会先创建该主类的对象。

3)void返回值:因为该方法被JVM调用,该方法的返回值返回给JVM,这里面没有意义。

根据方法调用规则:谁调用方法,谁负责为形参赋值。那么JVM怎么知道如何为args赋值呢?

 
  1. public class argstest{

  2. public static void main(String[] args){

  3. System.out.println(args.length); //args的长度

  4. for(String arg:args){ //进行循环遍历,查看args的内容

  5. System.out.println(arg);

从上面的代码可以看出,args默认是空的。如果运行java程序时在类名后紧跟一个或多个字符串(多个字符串之间以空格隔开),JVM就会把这些字符串依次赋值给args数组。如

java argstest  java test    如果参数本身加了空格,可以用"",这样JVM就会把这个空格也算进参数里。如 java argstest "java test"

 

2.使用Scanner类可以很方便地获取用户的键盘输入。Scanner主要提供了两个方法来扫描输入。

1)hasNextXxx():是否还有下一个输入项,其中Xxx可以死Int、Long等代表基本数据类型的字符串。如果只是判断是否包含下一个字符串,则直接使用hasNext()。

2)nextXxx():获取下一个输入项。

在默认情况下,Scanner使用空白(包括空格、tab空白、回车)作为多个输入项之间的分隔符。

 

 
  1. import java.util.Scanner; //记得要导入Scaner类

  2. public class scannertest{

  3. public static void main(String[] args){

  4. Scanner sr = new Scanner(System.in);//创建一个Scanner类对象sr,System.in代表键盘输入

  5. while(sr.hasNext()){ //判断是否还有下一个输入项

  6. System.out.println("键盘输入的内容是"+sr.next());

如果希望改变Scanner的分隔符,可以使用useDelimiter()方法来定义新的分隔符。

 

Scanner的读取操作可能被阻赛来等待信息的输入。如果输入源没有结束,Scanner又读不到更多输入项时(尤其在键盘输入时比价常见),Scanner的hasNext()和next()方法都有可能阻塞,hasNext()方法是否阻塞与和其相关的next()方法是否阻塞无关。

 

 
  1. import java.util.Scanner;

  2. public class test56{

  3. public static void main(String[] args){

  4. Scanner sc = new Scanner(System.in);

  5. sc.useDelimiter("\t"); //以tab键结束当前的输出

  6. while(sc.hasNext()){

  7. System.out.println("不阻塞部分");

  8. System.out.println("阻塞部分"+sc.next()); //即使hasNext()返回了true,next()方法是也可能造成阻塞

  9. }

  10. }//比如输入"天赋影响上限+tab+努力决定下限"会输出"...天赋影响上限"而"...努力决定下限"被阻塞了,因为此时还在等待输入,并没有扫描到tab,所以此时输入

  11. } //还没有结束

 

3)Scanner提供了两个简单的方法来逐行读取。

boolean hasNextLine():返回输入源中是否还有下一行。

String nextLine():返回输入源中下一行的字符串。

关于next()方法和nextLine()方法的区别,可以看这里点击打开链接

 

 
  1. import java.util.Scanner;

  2. public class scannertest2{

  3. public static void main(String[] args){

  4. String s1,s2;

  5. Scanner sc = new Scanner(System.in);

  6. System.out.println("输入第一个字符串");

  7. s1=sc.next();

  8. //s2=sc.nextLine();

  9. System.out.println("第一个字符串是"+s1);

  10. System.out.println("输入第二个字符串");

  11. s2=sc.nextLine();

  12. System.out.println("第二个字符串是"+s2);

  13. System.out.println("第一和第二字符串的内容是"+s1+s2);

  14. }

  15. }

 

上面代码中,运行程序,输入a b c d+回车,会输出

其原因是因为nextLine()方法自动读取了next()方法去掉的Enter作为结束符,所以无法给s2从键盘获取输入值。如果要解决,可以在s1=sc.next();后加s2=sc.nextLine();

4)Scanner不仅可以获取字符串输入,也可以获取任何基本类型的输入项,如

 

 
  1. import java.util.Scanner;

  2. public class scannertest3{

  3. public static void main(String[] args){

  4. Scanner sc = new Scanner(System.in);

  5. while(sc.hasNextLong()){ //判断是否还有下一个纯Long型的数据。如果没有,直接跳出。

  6. System.out.println("键盘输入的内容是"+sc.next());


5)Scanner不仅能读取用户的键盘输入,还可以读取文件输入

 

 

 
  1. import java.util.Scanner;

  2. import java.io.*; //记得导入这个包

  3. public class scannertest4{

  4. public static void main(String[] args)throws Exception{

  5. Scanner sc = new Scanner(new File("scannertest4.java")); //将一个File对象作为Scannner的构造器参数,Scanner读取文件内容

  6. System.out.println("scannertest4.java文件内容如下");

  7. sc.useDelimiter("/n");

  8. while(sc.hasNext()){

  9. System.out.println(sc.next()); //必须使用nextLine()方法获取整行输出

  10. } //如果使用next()方法,那么就会把空格和tab也当作分割符,那么这时就要用useDelimiter("/n")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值