“Java控制台输入”的版本间的差异
来自CloudWiki
(未显示同一用户的7个中间版本) | |||
第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("请输入一个整数:"); | 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(" | + | sc.close(); |
+ | } | ||
+ | }</nowiki> | ||
+ | |||
+ | |||
+ | ===hasNextInt( )方法=== | ||
+ | *如果要输入 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> | ||
+ | ===nextFloat()方法=== | ||
+ | *如果要输入 float 类型的数据,在 Scanner 类中也有支持, | ||
+ | <nowiki>import java.util.Scanner; | ||
+ | public class scanner { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | //System.in代表标准输入,就是键盘输入 | ||
+ | //System.in代表标准输入,就是键盘输入 | ||
+ | Scanner sc = new Scanner(System.in); | ||
+ | System.out.print("输入小数:"); | ||
+ | float f = sc.nextFloat(); | ||
+ | // 接收小数 | ||
+ | System.out.println("小数数据:" + f); | ||
+ | sc.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> | ||
+ | |||
+ | |||
+ | ===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” |
− | System.out.println(" | + | System.out.println("您输入的双精度数信息为:" + d); |
− | + | sc.close(); | |
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
}</nowiki> | }</nowiki> | ||
− | + | ||
− | + | ||
返回 [[Java程序设计]] | 返回 [[Java程序设计]] |
2020年2月1日 (六) 10:15的最新版本
目录
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); sc.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(); }
nextFloat()方法
- 如果要输入 float 类型的数据,在 Scanner 类中也有支持,
import java.util.Scanner; public class scanner { public static void main(String[] args) { //System.in代表标准输入,就是键盘输入 //System.in代表标准输入,就是键盘输入 Scanner sc = new Scanner(System.in); System.out.print("输入小数:"); float f = sc.nextFloat(); // 接收小数 System.out.println("小数数据:" + f); sc.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(); }
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); sc.close(); } }
返回 Java程序设计