코딩라이브러리/Dart

[Dart] 코딩 연습 입출력 코드 방법

유니네 라이브러리 2024. 6. 10. 19:56

Dart에서 코딩 연습을 할 때 사용하는 기본적인 입출력 방법을 정리한다.

입력을 받기 위해서는 dart:io 라이브러리를 사용해야 한다.

 

📌 문자열 입력받기

 

Dart에서 문자열을 입력받으려면 stdin.readLineSync()를 사용한다.

import 'dart:io';

void main() {  
  // 사용자에게 입력 요청
  stdout.write('문자열을 입력하세요: ');	
  
  // 문자열 입력받기
  String? str = stdin.readLineSync()!;  
  // String str = stdin.readLineSync().toString(); 도 가능
  
  print("입력값: $str");  
}

 

✅ 실행 예시

문자열을 입력하세요: sky
입력값: sky

 

📌 공백으로 구분된 문자열 리스트 입력받기

 

공백을 기준으로 여러 개의 문자열을 입력받고 리스트로 변환할 수 있다.

import 'dart:io';

void main() {  
  stdout.write('문자열을 공백으로 구분하여 여러 개 입력하세요: ');  
  
  // 문자열을 공백 기준으로 나누어 리스트로 저장
  List<String?> lst = stdin.readLineSync()!.split(" ");
  
  for (int i = 0; i < lst.length; i++) {
    print("리스트 입력 $i 번째 값: ${lst[i]}");
  }
}

 

✅ 실행 예시

문자열을 공백으로 구분하여 여러 개 입력하세요: blue red white
리스트 입력 0 번째 값: blue
리스트 입력 1 번째 값: red
리스트 입력 2 번째 값: white

 

📌 정수 입력받기

 

stdin.readLineSync()로 입력받은 후 int.parse()를 사용하여 정수로 변환할 수 있다.

import 'dart:io';

void main() {  
  stdout.write('숫자를 입력하세요: ');  
  
  // 정수 입력받기
  int? no = int.parse(stdin.readLineSync()!);  
  // int no = int.parse(stdin.readLineSync().toString()); 도 가능
  
  print("입력받은 숫자: $no");
}

 

⚠️ 주의할 점

만약 문자열이 입력되면 아래와 같은 오류가 발생한다.

Unhandled exception:
FormatException: Invalid radix-10 number (at character 1)

이를 방지하려면 예외 처리를 추가하는 것이 좋다.

 

✅ 실행 예시

숫자를 입력하세요: 10
입력받은 숫자: 10

 

📌 공백으로 구분된 정수 리스트 입력받기

 

여러 개의 숫자를 입력받아 정수 리스트로 변환하려면 map()을 사용한다.

import 'dart:io';

void main() {  
  stdout.write('숫자를 공백으로 구분하여 여러 개 입력하세요: ');  
  
  // 공백으로 구분된 숫자를 입력받아 정수 리스트로 변환
  List<int> nolst = stdin.readLineSync()!.split(" ").map((e) => int.parse(e)).toList();
  
  for (int i = 0; i < nolst.length; i++) {
    print("리스트 입력 $i 번째 값: ${nolst[i]}");
  }
}

 

⚠️ 주의할 점

문자열이 입력되면 FormatException이 발생할 수 있으므로 예외 처리를 추가하는 것이 안전하다.

 

✅ 실행 예시

숫자를 공백으로 구분하여 여러 개 입력하세요: 10 11 12
리스트 입력 0 번째 값: 10
리스트 입력 1 번째 값: 11
리스트 입력 2 번째 값: 12

 

📌 정리

입력 방식 예제 코드
문자열 입력 stdin.readLineSync()
공백 구분된 문자열 리스트 입력 stdin.readLineSync()!.split(" ")
정수 입력 int.parse(stdin.readLineSync()!)
공백 구분된 정수 리스트 입력 stdin.readLineSync()!.split(" ").map((e) => int.parse(e)).toList()

 

🔗 Dart 자습서 참고 사이트

 

Write command-line apps

Basics for command-line apps.

dart-ko.dev