首先区分scanner.nextInt()//输入一个整数,只能读取一个数,空格就停止。
scanner.next()//输入字符串,只能读取一个字符串,空格就停止,但是逗号不停止。
scanner.nextLine() 读取一行,换行停止,空格不停止
例:输入:1,2
如果是 1 2(中间是空格的话),直接读取就行
如果是1,2 逗号间隔的话,
// 输入如下
ABB,CCC,DDD ,EEE,123,435
肯定使用nextLine,
如:
- // 输入如下
- 3 4
- 10 2 3
- 11 4 5 6
解决办法:
- import java.util.Arrays;
- import java.util.Scanner;
-
- public class myScanner {
- Scanner sc = new Scanner(System.in);
- public static void main(String[] args) {
- System.out.println("输入:");
- Scanner sc = new Scanner(System.in);
- int m = sc.nextInt();
- int n = sc.nextInt();
- int[] num1 = new int[m];
- int[] num2 = new int[n];
- // 换成其他数据类型也一样,其他数值类型就修改int跟nextInt就可以了,
- //String就把nextInt()换成next()
- for(int i = 0; i < m; i ++) {
- num1[i] = sc.nextInt(); // 一个一个读取
- }
- for(int i = 0; i < n; i ++) {
- num2[i] = sc.nextInt();
- }
- System.out.println("输出:");
- System.out.println(Arrays.toString(num1));
- System.out.println(Arrays.toString(num2));
- }
- }
假设第一行输入m,n,m表示后面有m行,n表示每行最多有n个(可用来截断某一行多输入的参数,不详细分析了)。
、
- // 输入如下
- 3 4
- AA bcd 123 54
- AA BB
- A B C
解决办法:
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Scanner;
-
- public class myScanner {
- Scanner sc = new Scanner(System.in);
- public static void main(String[] args) {
- System.out.println("输入:");
- Scanner sc = new Scanner(System.in);
- int m = sc.nextInt();
- sc.nextLine(); // 很重要,跳到第二行
- // 若直接确定行数,注释掉上面两行,加入下面一行
- // int m = 3;
- String[] strArr = new String[m];
- // 从第二行开始读取
- for(int i = 0; i < m; i++) {
- strArr[i] = sc.nextLine();
- }
- System.out.println("输出:");
- System.out.println(Arrays.toString(strArr));
- ArrayList<String[]> strToOne = new ArrayList<String[]>();
- for(int i = 0; i < m; i ++) {
- String[] tmp = strArr[i].trim().split(" ");
- strToOne.add(tmp);
- }
- System.out.println(strToOne);
- // 形象点显示
- System.out.print("[");
- for(int i = 0; i < strToOne.size(); i++) {
- System.out.print(Arrays.toString(strToOne.get(i)));
- if(i != strToOne.size()-1)
- System.out.print(", ");
- }
- System.out.print("]");
- }
- }
4. 输入字符串型的数组,转换成整数
例如
输入: [1,2,3,4] //整体是字符串
解决方案:
- import java.util.Scanner;
-
- public class myScanner {
- Scanner sc = new Scanner(System.in);
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String c = in.nextLine();//读取一整行
- c = c.substring(1, c.length() - 1);//去掉两头的[]
- System.out.println(c);
- String[] ch = c.split(",");//按照,分割
- int a[] = new int[ch.length];//定义一个整数数组
- for (int i = 0; i < ch.length; i++) {
- System.out.print(ch[i] + " ");
- a[i] = Integer.valueOf(ch[i]);//将字符串型转换为数组
- System.out.println(a[i]);
- }
-
- }
- }