Primeiro distinga scanner.nextInt() // Insira um número inteiro, apenas um número pode ser lido e o espaço será interrompido.
scanner.next() // Insira uma string, apenas uma string pode ser lida e o espaço irá parar, mas a vírgula não irá parar.
scanner.nextLine() lê uma linha, para na nova linha, não para no espaço
1. Leia vários parâmetros da mesma linha
Exemplo: Entrada: 1, 2
Se for 1 2 (se houver um espaço no meio), basta ler diretamente.
Se for separado por 1,2 vírgula,
//Insira o seguinte
ABB, CCC, DDD, EEE, 123, 435
Definitivamente use nextLine,
como:
2 Tomemos três linhas de entrada como exemplo. Na primeira linha, insira dois números m e n, que representam os comprimentos das matrizes num1 e num2 respectivamente. Na segunda e terceira linhas, insira os elementos de num1 e num2, separados por espaços.
// 输入如下
3 4
10 2 3
11 4 5 6
Solução:
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));
}
}
3. Insira vários parâmetros em várias linhas e o número de parâmetros em cada linha é variável.
Suponha que m e n sejam inseridos na primeira linha. m significa que há m linhas depois dela e n significa que há no máximo n em cada linha (pode ser usado para truncar vários parâmetros de entrada em uma determinada linha, e Não vou analisar detalhadamente).
、
// 输入如下
3 4
AA bcd 123 54
AA BB
A B C
Solução:
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. Insira uma matriz de string e converta-a em um número inteiro
Por exemplo
Entrada: [1,2,3,4] //O todo é uma string
solução:
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]);
}
}
}