[Java 8] Jusqu'à la conversion de l'entrée standard qui peut être utilisée dans les tests de codage en une liste ou un tableau

Si vous souhaitez connaître rapidement la méthode de conversion, veuillez consulter la conclusion à la fin de la page.

Contexte

Dans la continuité de la dernière fois, c'est à nouveau un matériau de test de codage. [Java 8] Méthode de tri par ordre alphabétique et par ordre de longueur de chaîne de caractères pouvant être utilisée dans les tests de codage --Qiita

Evidemment, dans les tests de codage, l'essentiel du flux est "acquisition de valeur par entrée standard" -> "conversion pour un traitement facile" -> "une sorte de traitement de calcul". Je ne veux pas passer du temps à «acquérir des valeurs par entrée standard» et à «convertir pour mon propre traitement» afin de passer même un peu de temps sur «une sorte de traitement de calcul».

Cette fois, comme le titre l'indique, je vais résumer comment convertir une entrée standard en une liste ou un tableau.

Environnement d'exploitation

Entrée standard commune dans les problèmes

Une entrée standard courante en question est une image comme celle ci-dessous.

1,AIUEO,Kakikukeko

Supposons que le problème soit d'obtenir les caractères séparés par des virgules (,) et de sortir les caractères après le premier numéro d'entrée. Dans l'exemple ci-dessus, le premier nombre est 1, donc la sortie est

AIUEO

Est la bonne réponse.

2,AIUEO,Kakikukeko,SA Shi Su Se So

Si est une entrée standard

AIUEO
Kakikukeko

Est la bonne réponse.

Dans de tels cas, je voudrais d'abord lire la chaîne et la stocker dans une liste séparée par des virgules.

De l'obtention d'une entrée standard à la conversion en liste

Tout d'abord, obtenez l'entrée standard comme suit.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();

Il semble y avoir un moyen de l'obtenir avec Scanner, mais j'utilise un modèle qui utilise java.io.BufferedReader et java.io.InputStreamReader. Une ligne de chaîne de caractères est stockée en ligne.

Ensuite, essayons le processus de stockage dans la liste séparée par des virgules (,) dans le sujet principal.

List<String> list = Arrays.asList(line.split(","));

C'est facile, mais c'est tout.

split divise une chaîne à une position qui correspond à l'expression régulière spécifiée. La valeur de retour de ceci est String []. C'est un tableau de type chaîne. Comme il est divisé par une expression régulière, il peut être divisé par autre chose qu'une virgule (,). L'étape suivante consiste à utiliser la méthode java.util.Arrays.asList pour convertir le tableau en liste.

Il peut être indépendant en tant que méthode comme indiqué ci-dessous.

/**
 *Convertir de chaîne en liste
 * @param str Chaîne convertie
 * @retour Liste convertie
 */
private static List<String> stringToList(String line) {
  return Arrays.asList(line.split(","));
}

Réponses d'entrée standard aux problèmes

Si vous répondez à la question à laquelle vous avez pensé, vous obtiendrez le code source ci-dessous. ~~ Il est normal d'utiliser un tableau au lieu d'une liste! !! Et Vous n'avez pas besoin de le convertir en liste! !! Veuillez ne pas dire "Tsukomi" ......... ~~

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;


public class Main {
	public static void main(String[] args) throws IOException {
    try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
			String line = br.readLine();
			List<String> list = Arrays.asList(line.split(","));
			int cnt = Integer.parseInt(list.get(0));
			for (int i = 1; i <= cnt; i++) {
				System.out.println(list.get(i));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Conclusion

S'il s'agit d'une liste,

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
List<String> list = Arrays.asList(line.split(","));

Si c'est un tableau

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
String[] strArray = line.split(",");

Recommended Posts

[Java 8] Jusqu'à la conversion de l'entrée standard qui peut être utilisée dans les tests de codage en une liste ou un tableau
[Java 8] Méthode de tri par ordre alphabétique et par ordre de longueur de chaîne de caractères pouvant être utilisée dans les tests de codage
Ecrire une classe qui peut être ordonnée en Java Un petit mémo standard
Résumé de l'ORM "uroboroSQL" qui peut être utilisé dans le Java d'entreprise
Traitement d'entrée / sortie de fichier Java pouvant être utilisé via l'historique
[Android Studio] Description qui peut être saisie en continu dans la base de données SQLite [Java]
Extrait technologique pouvant être utilisé pour créer des sites EC dans la formation Java
Touches de raccourci pratiques pour Eclipse
Syntaxe et conditions d'occurrence d'exception pouvant être utilisées lors de la comparaison avec null en Java
Liste des appareils pouvant être prévisualisés avec Swift UI
Créer un contrôle de page qui peut être utilisé avec RecyclerView
Créez un fichier jar qui peut être exécuté sur Gradle
Java (édition super débutante) compréhensible en 180 secondes
Lire l'entrée standard en Java
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
Comment créer une paire de clés d'ecdsa dans un format lisible par Java
Mémo de référence / serveur LDAP en mémoire pouvant être intégré à Java
Outil d'analyse statique pouvant être utilisé avec GitHub [version Java]
Notez que les propriétés système, y compris JAXBContext, ne peuvent pas être utilisées dans Java11
J'ai posé une question qui peut être utilisée pour des entretiens techniques
SwiftUI View qui peut être utilisé en combinaison avec d'autres frameworks
Convertir un tableau de chaînes en une liste d'entiers en Java
[Spring Boot] Liste des règles de validation qui peuvent être utilisées dans le fichier de propriétés pour les messages d'erreur
Méthodes de tableau Ruby pouvant être utilisées avec Rails (autres que chacun)