赞
踩
Java中要想输入时便要用到Scanner
首先在使用之前导入util包
要想通过控制台进行输入,首先要构造一个Scanner对象,它附属于"标准输入流 Scanner in = new Scanner(System.in);
现在我们就可以使用Scanner类的各种方法了
第一行输入n, m
第二行输入n个整数
第三行输入m个字符串
//导入包 import java.util.Scanner; import java.util.Arrays; public class MyScanner { public static void main(String[] args) { //创建对象 Scanner sc = new Scanner(System.in); System.out.println("输入数据:"); //多行输入 int n = sc.nextInt(); int m = sc.nextInt(); int[] arr = new int[n]; String[] str = new String[m]; //int等基本数据类型的数组,用nextInt(),同行或不同都可以 for(int i=0; i<n; i++) { arr[i] = sc.nextInt(); } //String字符串数组, 读取用next(),以空格划分 for(int i=0; i<m; i++) { str[i] = sc.next(); } //调用方法进行操作 TestSc(n, m, arr); TestStr(str); System.out.println("Test01 End"); //关闭 sc.close(); } public static void TestSc(int n, int m, int[] arr) { System.out.println("数据n:" + n + ", 数据m:" + m); System.out.println(Arrays.toString(arr)); } public static void TestStr(String[] str) { System.out.println(Arrays.toString(str)); } }
若输入的字符串中想要包含空格,使用scanner.nextLine()换行后用scanner.nextLine()进行读入,见情形7.
第一行输入n, m
第二行开始输入二维数组。
import java.util.Arrays; import java.util.Scanner; public class MyScanner2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入数据:"); //二维数组 int n = sc.nextInt(); int m = sc.nextInt(); int[][] arr2 = new int[n][m]; System.out.println("Test02 输入二维数组数据:"); //可以直接读入 for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { arr2[i][j] = sc.nextInt(); } } TestSc(n, m, arr2); //关闭 sc.close(); } public static void TestSc(int n, int m, int[][] arr) { System.out.println("数据n:" + n + ", 数据m:" + m); for(int i=0; i<n; i++) { System.out.println(Arrays.toString(arr[i])); } System.out.println("数组行数: arr.length= "+ arr.length); System.out.println("数组列数: arr[0].length= "+ arr[0].length); } }
输入字符串,用空格隔开。
next()和nextLine()区别。
next():
1、一定要读取到有效字符后才可以结束输入.
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next()不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
import java.util.Scanner; /* *next()读取到空白停止,在读取输入后将光标放在同一行中。 *nextLine()读取到回车停止 ,在读取输入后将光标放在下一行。 */ ```java public class MyScanner3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入字符串:"); //next():只读取输入直到空格。 String str = sc.next(); //nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号 String str2 = sc.nextLine(); System.out.println("str:" + str); System.out.println("str2:" + str2); //关闭 sc.close(); } }
先用scanner.nextLine()读入字符串,再将字符串分割为字符数组或字符串数组。
import java.util.*; public class MyScanner4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入字符串数组:"); String str; str = sc.nextLine(); char[] ch = new char[str.length()]; for(int i=0; i<str.length(); i++) { //用charAt();进行定位分隔 ch[i] = str.charAt(i); System.out.println(ch[i] + " "); } System.out.println("END"); //读入字符串后,用空格分隔为数组 String[] strs = str.split(" "); System.out.println(Arrays.toString(strs)); } }
区别于情形1,对于不能采用for循环的方式获取String。采用情形5,6用来处理。
采用while(scanner.hasNext()) 循环,实现连续输入。
格式:数字,空格,字符串。
或: 数字,回车,字符串
import java.util.Scanner; public class MyScanner5 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int n = sc.nextInt(); String str = sc.next(); Tes(n, str); } sc.close(); } public static void Tes(int n, String str) { System.out.println("n = " + n); System.out.println("str = " + str); System.out.println("str.length = " + str.length()); } }
也采用scanner.nextLine(),将光标移到下一行。再继续读入字符串。
第一行输入整数n,m,第二行开始输入字符串。或
第一行输入整数n,第二行输入m,第三行开始输入字符串。
import java.util.*; public class MyScanner6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); //注意!!!光标换到下一行 sc.nextLine(); String s = sc.nextLine(); String str = sc.nextLine(); System.out.println("n = " + n + " , m = " + m); System.out.println("s = " + s); System.out.println("str = " + str); sc.close(); } }
采用scanner.nextLine(),将光标移到下一行。再继续读入字符串。
第一行输入n,
第二行开始输入n行字符串,字符串中包含空格。
import java.util.Scanner; public class MyScanner7 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String[] strs = new String[n]; sc.nextLine(); for(int i=0; i<n; i++) { String str = sc.nextLine(); strs[i] = str; } Tes2(strs); System.out.println("End"); sc.close(); } public static void Tes2(String[] strs) { for(int i=0; i<strs.length; i++) { String str = strs[i]; System.out.println(str); } } }
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。