“Java控制台输入”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第1行: 第1行:
 +
==Scanner的创建==
 
*程序运行时,经常需要在运行过程中取得输入,比如在网络购书系统的主目录界面,运行过程中需要获取用户选择操作的键盘输入。
 
*程序运行时,经常需要在运行过程中取得输入,比如在网络购书系统的主目录界面,运行过程中需要获取用户选择操作的键盘输入。
 +
 
*Scanner是一个基于正则表达式的文本扫描器,使用Scanner类可以很方便地获取用户的键盘输入。产生一个具体的Scanner引用的语句为:
 
*Scanner是一个基于正则表达式的文本扫描器,使用Scanner类可以很方便地获取用户的键盘输入。产生一个具体的Scanner引用的语句为:
 +
import java.util.Scanner;
 
  Scanner 变量名 = new Scanner(System.in);
 
  Scanner 变量名 = new Scanner(System.in);
 
*System.in代表标准输入,就是键盘输入。
 
*System.in代表标准输入,就是键盘输入。
 +
 +
==使用next方法==
 +
 +
<nowiki>import java.util.Scanner;
 +
 +
public class TestDemo {
 +
    public static void main(String[] args) {
 +
        Scanner scan = new Scanner(System.in);
 +
        // 从键盘接收数据
 +
 +
        // next方式接收字符串
 +
        System.out.println("next方式接收:");
 +
             
 +
        String str1 = scan.next();
 +
        System.out.println("输入的数据为:" + str1);       
 +
        scan.close();
 +
    }
 +
}</nowiki>
 +
*执行以上程序输出结果为:
 +
 +
$ javac ScannerDemo.java
 +
$ java ScannerDemo
 +
next方式接收:
 +
Hello World
 +
*输入的数据为:Hello
 +
*可以看到 hello字符串并未输出,接下来我们看 nextLine。
 +
 +
==使用 nextLine 方法:==
 +
*ScannerDemo.java 文件代码:
 +
<nowiki>import java.util.Scanner;
 +
 +
public class ScannerDemo {
 +
    public static void main(String[] args) {
 +
        Scanner scan = new Scanner(System.in);
 +
        // 从键盘接收数据
 +
        // nextLine方式接收字符串
 +
        System.out.println("nextLine方式接收:");
 +
        String str2 = scan.nextLine();
 +
        System.out.println("输入的数据为:" + str2);     
 +
        scan.close();
 +
    }
 +
}</nowiki>
 +
 +
*执行以上程序输出结果为:
 +
$ javac ScannerDemo.java
 +
$ java ScannerDemo
 +
nextLine方式接收:
 +
Hello World
 +
*输入的数据为:Hello World
 +
*可以看到 World 字符串输出。
 +
==next() 与 nextLine() 区别==
 +
*'''next()''':
 +
    1、一定要读取到有效字符后才可以结束输入。
 +
    2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
 +
    3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
 +
    next() 不能得到带有空格的字符串。
 +
*'''nextLine()''':
 +
    1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
 +
    2、可以获得空白。
 +
 +
 +
 +
 
*利用Scanner对象获取输入项的方法为nextXxx(),其中Xxx可以是Int、Long等代表基本数据类型的输入项。如果只是获取下一个字符串类型的输入项,则直接使用next()方法。
 
*利用Scanner对象获取输入项的方法为nextXxx(),其中Xxx可以是Int、Long等代表基本数据类型的输入项。如果只是获取下一个字符串类型的输入项,则直接使用next()方法。
 
*在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。
 
*在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。
 +
==nextInt方法==
 +
*如果要输入 int 类型的数据,在 Scanner 类中也有支持,
 
*例如,下面程序使用Scanner来获得用户的键盘输入。
 
*例如,下面程序使用Scanner来获得用户的键盘输入。
 
  <nowiki>public class ScannerKeyBoardTest {
 
  <nowiki>public class ScannerKeyBoardTest {
第10行: 第78行:
 
//System.in代表标准输入,就是键盘输入
 
//System.in代表标准输入,就是键盘输入
 
Scanner sc = new Scanner(System.in);
 
Scanner sc = new Scanner(System.in);
System.out.println("请输入一串字符信息:");
+
//此时如果键盘输入为:“This is a test!”
 
String strLine = sc.nextLine();
 
//此时的输出为:“您输入的字符语句信息为:This is a test!”
 
System.out.println("您输入的字符语句信息为:" + strLine);
 
 
System.out.println("请输入一个整数:");
 
System.out.println("请输入一个整数:");
 
//此时如果键盘输入为:“2018”
 
//此时如果键盘输入为:“2018”
 
int i = sc.nextInt();
 
int i = sc.nextInt();
 
//此时的输出为:“您输入的整数信息为:2018”
 
//此时的输出为:“您输入的整数信息为:2018”
System.out.println("您输入的整数信息为:" + i);
+
System.out.println("您输入的整数信息为:" + i);
System.out.println("请输入一个小数:");
+
scan.close();
 +
}
 +
}</nowiki>
 +
==nextFloat()方法==
 +
*如果要输入 float 类型的数据,在 Scanner 类中也有支持,
 +
<nowiki>public class ScannerKeyBoardTest {
 +
public static void main(String[] args) {
 +
//System.in代表标准输入,就是键盘输入
 +
Scanner sc = new Scanner(System.in);
 +
System.out.print("输入小数:");
 +
f = scan.nextFloat();
 +
                // 接收小数
 +
                System.out.println("小数数据:" + f);
 +
scan.close();
 +
}
 +
}</nowiki>
 +
==nextDouble()方法==
 +
*如果要输入 double 类型的数据,在 Scanner 类中也有支持,
 +
<nowiki>public class ScannerKeyBoardTest {
 +
public static void main(String[] args) {
 +
//System.in代表标准输入,就是键盘输入
 +
Scanner sc = new Scanner(System.in);
 +
System.out.print("输入双精度数:");
 +
System.out.println("请输入双精度数:");
 
//此时如果键盘输入为:“3.1415”
 
//此时如果键盘输入为:“3.1415”
 
double d = sc.nextDouble();
 
double d = sc.nextDouble();
//此时的输出为:“您输入的小数信息为:3.1415”
+
//此时的输出为:“您输入的双精度数信息为:3.1415”
System.out.println("您输入的小数信息为:" + d);
+
System.out.println("您输入的双精度数信息为:" + d);
System.out.println("请输入一个字符串信息:");
+
scan.close();
//此时如果键盘输入为:“This is a test!”
 
String str = sc.next();
 
//此时的输出为:“您输入的字符串信息为:This”
 
//因为Scanner对象默认使用空白作为多个输入项之间的分隔符
 
System.out.println("您输入的字符串信息为:" + str);
 
 
}
 
}
 
}</nowiki>
 
}</nowiki>
*该程序的运行结果为:
+
==hasNextInt( )方法==
*[[文件:java2-5.png]]
+
*如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
 +
<nowiki>import java.util.Scanner;
 +
 +
public class ScannerDemo {
 +
    public static void main(String[] args) {
 +
        Scanner scan = new Scanner(System.in);
 +
        // 从键盘接收数据
 +
        int i = 0;
 +
        float f = 0.0f;
 +
        System.out.print("输入整数:");
 +
        if (scan.hasNextInt()) {
 +
            // 判断输入的是否是整数
 +
            i = scan.nextInt();
 +
            // 接收整数
 +
            System.out.println("整数数据:" + i);
 +
        } else {
 +
            // 输入错误的信息
 +
            System.out.println("输入的不是整数!");
 +
        }
 +
      scan.close();
 +
}</nowiki>
 +
==hasNextFloat方法==
 +
*如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
 +
<nowiki>import java.util.Scanner;
 +
 +
public class ScannerDemo {
 +
    public static void main(String[] args) {
 +
        Scanner scan = new Scanner(System.in);
 +
        // 从键盘接收数据
 +
        int i = 0;
 +
        float f = 0.0f;
 +
        System.out.print("输入小数:");
 +
        if (scan.hasNextFloat()) {//如果下一个输入是小数的话,再去读取
 +
            // 判断输入的是否是小数
 +
            f = scan.nextFloat();
 +
            // 接收小数
 +
            System.out.println("小数数据:" + f);
 +
        } else {
 +
            // //如果下一个输入不是小数的话,输出错误的信息
 +
            System.out.println("输入的不是小数!");
 +
        }
 +
      scan.close();
 +
}</nowiki>
  
 
返回 [[Java程序设计]]
 
返回 [[Java程序设计]]

2018年3月7日 (三) 13:57的版本

Scanner的创建

  • 程序运行时,经常需要在运行过程中取得输入,比如在网络购书系统的主目录界面,运行过程中需要获取用户选择操作的键盘输入。
  • Scanner是一个基于正则表达式的文本扫描器,使用Scanner类可以很方便地获取用户的键盘输入。产生一个具体的Scanner引用的语句为:
import java.util.Scanner; 
Scanner 变量名 = new Scanner(System.in);
  • System.in代表标准输入,就是键盘输入。

使用next方法

import java.util.Scanner; 
 
public class TestDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
 
        // next方式接收字符串
        System.out.println("next方式接收:");
               
        String str1 = scan.next();
        System.out.println("输入的数据为:" + str1);        
        scan.close();
    }
}
  • 执行以上程序输出结果为:
$ javac ScannerDemo.java
$ java ScannerDemo

next方式接收:

Hello World
  • 输入的数据为:Hello
  • 可以看到 hello字符串并未输出,接下来我们看 nextLine。

使用 nextLine 方法:

  • ScannerDemo.java 文件代码:
import java.util.Scanner;
 
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据 
        // nextLine方式接收字符串
        System.out.println("nextLine方式接收:");
        String str2 = scan.nextLine();
        System.out.println("输入的数据为:" + str2);       
        scan.close();
    }
}
  • 执行以上程序输出结果为:
$ javac ScannerDemo.java
$ java ScannerDemo
nextLine方式接收:
Hello World
  • 输入的数据为:Hello World
  • 可以看到 World 字符串输出。

next() 与 nextLine() 区别

  • next():
   1、一定要读取到有效字符后才可以结束输入。
   2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
   3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
   next() 不能得到带有空格的字符串。
  • nextLine()
   1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。 
   2、可以获得空白。



  • 利用Scanner对象获取输入项的方法为nextXxx(),其中Xxx可以是Int、Long等代表基本数据类型的输入项。如果只是获取下一个字符串类型的输入项,则直接使用next()方法。
  • 在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。

nextInt方法

  • 如果要输入 int 类型的数据,在 Scanner 类中也有支持,
  • 例如,下面程序使用Scanner来获得用户的键盘输入。
public class ScannerKeyBoardTest {
	public static void main(String[] args) {
		//System.in代表标准输入,就是键盘输入
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一个整数:");
		//此时如果键盘输入为:“2018”
		int i = sc.nextInt();
		//此时的输出为:“您输入的整数信息为:2018”
		System.out.println("您输入的整数信息为:" + i);		
		scan.close();
	}
}

nextFloat()方法

  • 如果要输入 float 类型的数据,在 Scanner 类中也有支持,
public class ScannerKeyBoardTest {
	public static void main(String[] args) {
		//System.in代表标准输入,就是键盘输入
		Scanner sc = new Scanner(System.in);
		 System.out.print("输入小数:");
		f = scan.nextFloat();
                // 接收小数
                System.out.println("小数数据:" + f);
		scan.close();
	}
}

nextDouble()方法

  • 如果要输入 double 类型的数据,在 Scanner 类中也有支持,
public class ScannerKeyBoardTest {
	public static void main(String[] args) {
		//System.in代表标准输入,就是键盘输入
		Scanner sc = new Scanner(System.in);
		 System.out.print("输入双精度数:");
		System.out.println("请输入双精度数:");
		//此时如果键盘输入为:“3.1415”
		double d = sc.nextDouble();
		//此时的输出为:“您输入的双精度数信息为:3.1415”
		System.out.println("您输入的双精度数信息为:" + d);
		scan.close();
	}
}

hasNextInt( )方法

  • 如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
import java.util.Scanner;
 
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
        int i = 0;
        float f = 0.0f;
        System.out.print("输入整数:");
        if (scan.hasNextInt()) {
            // 判断输入的是否是整数
            i = scan.nextInt();
            // 接收整数
            System.out.println("整数数据:" + i);
        } else {
            // 输入错误的信息
            System.out.println("输入的不是整数!");
        }
       scan.close();
}

hasNextFloat方法

  • 如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
import java.util.Scanner;
 
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
        int i = 0;
        float f = 0.0f;
        System.out.print("输入小数:");
        if (scan.hasNextFloat()) {//如果下一个输入是小数的话,再去读取
            // 判断输入的是否是小数
            f = scan.nextFloat();
            // 接收小数
            System.out.println("小数数据:" + f);
        } else {
            // //如果下一个输入不是小数的话,输出错误的信息
            System.out.println("输入的不是小数!");
        }
       scan.close();
}

返回 Java程序设计