Entrevista Java teste escrito entrada da versão ACM

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]);
        }

    }
}

Acho que você gosta

Origin blog.csdn.net/qq_45874683/article/details/132834244
Recomendado
Clasificación