TxKxZxWx's blog

AWS SAA、Javaの学習

Java学習 5日目 「標準入力」

・標準入力でデータを読み込む - scanner

 

標準入力に対応するようにプログラムを作っておけば、プログラム実行時にファイルを読み込んだり、キーボードからデータを読み込んだり、パラメータを指定したりというように、入力先を切り替えることができる。

 

 

「標準入力から文字列の読み込み」

import java.util.*; //データを読み込むためのライブラリをインポート

public class Main {
   public static void main(String args) {
    Scanner sc = new Scanner(System.in); //scannerを宣言
    String data = sc.next(); //標準入力から読み込まれたデータがdata変数に代入される
    System.out.println("hello" + data );

 

⬇︎

例:japanと入力されると「hello japan」と表示される。

Scannerで宣言されたsc変数が標準入力の入り口になっており、そこからnextメソッドで取り出したデータをdata変数に代入している。 

 

 

「標準入力から数値の読み込み」

import java.util.*;

public class Main {
   public static void main(String args) {
    Scanner sc = new Scanner(System.in);
    int data = sc.nextInt();
    System.out.println(data);

 

nextIntメソッド

→ 数値として読み込むためには整数型(stringをintに)にしてnextの後にInt( Iは大文字)

 

 

・入力されたデータが文字列ならString data = sc.next();

・入力されたデータが数値ならint data = sc.nextInt();

 

 

 

 

・複数データの読み込み - scanner & for

 

scannerにfor文を組み合わせることで複数のデータ読み込み処理ができる。

 

import java.util.*;

public class Main {
   public static void main(String args) {
    Scanner sc = new Scanner(System.in);
    int count = sc.nextInt();   // 3をカウント変数に代入

    String data;
    for (int i = 0; i < count; i++) {
      data = sc.next();
      System.out.println(data + "は、スライムを攻撃した");

    }

 

⬇︎

3

勇者

魔道士

戦士

 

と入力すると以下のように表示される。

勇者は、スライムを攻撃した

魔道士は、スライムを攻撃した

戦士は、スライムを攻撃した

 

 

 

例題①:

「標準入力から整数が1つ与えられます。for命令を使って、その整数回分「スライムがあらわれた」と出力するプログラムを作成してください。」

入力される値:

3

 

期待する出力値:

スライムがあらわれた
スライムがあらわれた
スライムがあらわれた

 

解答

import java.util.*;

public class Main {
  public static void main(String args) {
    Scanner sc = new Scanner(System.in);
    int count = sc.nextInt();
    for (int i = 0; i < count; i++){
      System.out.println("スライムがあらわれた");
}

 

 

例題②:

「標準入力で2つ(2行)の整数が与えられます。1つ目の数値から2つ目の数値までを、1ずつ増加させながら、1行ずつ順番に出力するプログラムを作成してください。」

入力される値:
4
6

 

期待する出力値:
4
5
6

 

解答

import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int syokichi = sc.nextInt();   // 入力されている4
    int jougenchi = sc.nextInt();  // 入力されている6

    for (int i = syokichi; i <= jougenchi; i++) {
      System.out.println(i);
}

 

 

入力された数値をそれぞれsyokichi変数とjougenchi変数に代入し、

for文でsyokichiがjougenchiの値になるまで繰り返し処理を実行する。

 

 

 

・西暦年と平成年の対応表を作る


ループ処理の具体例として、西暦年と平成年の対応表を作ります。今回は、ひとつの年だけではなく、1989年から2019年まで全ての年を出力します。

 

// 西暦年と平成年の対応表を作る
// 1989年から2019年までをループで出力
// ループ内で、各西暦年を平成年に変換


int seireki, heisei;   // seireki変数とheisei変数を用意
for (seireki = 1989; seireki <= 2019; seireki++) {
  System.out.print("西暦" + seireki + "年は、");
  heisei = seireki - 1988;
  System.out.println("平成" + heisei + "年です。");
}

 

⬇︎

西暦1989年は平成1年です。 

西暦1990年は平成2年です。

 ↓

西暦2019年は平成31年です。

 

 

解説:

for文を使用して1989年〜2019年までをループ。

そして繰り返し処理として、まず西暦年を表示させ、

平成年を計算し出力。

 

 

 

 

明日に続く。。。。