This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 1 year has passed since last update.

制御文

Last updated at Posted at 2022-04-21

条件分岐

if文

if文
if(条件){
  処理
} else if(条件){
  処理
} else{
  処理
}

switch文

switch文は、指定した変数が特定の値をとる場合に、実行するコードを指定できる。

switch文
switch(変数){
case 値1:
      処理
      break;
case 値2: 
      処理
      break;
default:
      例外処理
  break; 
}

三項演算子

三項演算子
条件式 ? trueの場合の式 : falseの場合の式;

繰り返し処理

for文

for文
for(初期化式;条件式;変化式){
  // 繰り返しの中で実行される処理
  ...
}

初期化式は、最初の一回だけ実行される式。初期化式では変数の宣言もできるが、初期化式で宣言した変数のスコープ(使用できる範囲)は、for文のブロック内であることに注意する。
繰り返しが一度実行されると、変化式を一回評価し、変数の値を変換する。その上で条件式を評価し、trueであれば再びブロック内の処理を行い、falseだった場合には繰り返し処理を終了する。

例: 和の計算

Sample.java
class Sample{
  public static void main(String[] args){
    int sum = 0;

    for (int i = 1; i <= 5; i++){
      System.out.println(i);
      sum += i;
    }

    System.out.println("合計=" + sum);
  }
}
結果
1
2
3
4
5
合計=15

配列の参照

配列の参照
for(int i =;i < 配列.length;i++){
  // 繰り返しの中で実行される処理
  ...
}

ArrayListの参照

ArrayListの参照
for(int i=0;i < list.size();i++){
// 繰り返しの中で実行される処理
  ...
}

Sample.java
import java.util.ArrayList;

public class Sample {

	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.add("Hello");
		list.add("こんにちわ");
		list.add("ニーハオ");

		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
			
		}

	}

}
結果
Hello
こんにちわ
ニーハオ

while文

while文
while(条件式){
  // 繰り返しの中で実行される処理
  ...
}

必要な変数は、while 文の前で宣言などを行う。
ブロックの中で条件式が変化するような処理を行うことに注意。

for文→繰り返しの回数が決まっている場合
while文→繰り返しの回数が決まっておらず、条件を満たしている限り処理を繰り返したい場合

continue:それ以降の処理がスキップされて、次の繰り返しに移る。
break: while文を抜けて、次の処理へ移る。

HashSetを参照する

Iteraterを用いる

Sample.java
import java.util.HashSet;
import java.util.Iterator;

public class Sample {

	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		set.add("Hello");
		set.add("こんにちわ");
		set.add("ニーハオ");
		
        //HashSetであるset内の要素を反復するイテレータを取得
		Iterator<String>iter =set.iterator();
		
		// while文の繰り返し条件に IteratorのhasNextメソッドを利用
		while(iter.hasNext()) {
            //Iteratorのnextメソッドで次のデータを取得
			String text = iter.next(); 
			System.out.println(text);

		}

	
	}

}

HashMapを参照する

Sample.java
import java.util.HashMap;
import java.util.Iterator;

public class Sample {

	public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<String, String>();
		map.put("apple", "りんご");
		map.put("orange", "みかん");
		map.put("grape", "ぶどう");

    // map内のキーを反復するイテレータを取得
		Iterator<String> iter = map.keySet().iterator();

		while (iter.hasNext()) {
			String key = iter.next();// Iteratorのnextメソッドで次のキーを取得
			String value = map.get(key);// キーに対するバリューを取得
			System.out.println(key + "=" + value);

		}

	}

}

do-while文

一回目の繰り返し処理をしたあと、条件式を評価する。

do-while文
do {// 繰り返しの中で実行される処理
  ...
}while(条件式);

Sample.java
import java.util.Random;

class Sample{
  public static void main(String[] args){
    int num;
    Random rand = new Random();

    System.out.println("6が出たら終わりです");

    do{
      num = rand.nextInt(6);// 0~6までの乱数を返す
      System.out.println("no = " + num);
    }while (num != 6);//6と一致しなければ処理を続ける
  }
}

例外処理

例外処理
try {
  // try ブロック
} catch (Exception e) {
  // 例外処理
}  finally {
	// 常に実行される
}

try ブロックを実行して、例外が発生しなければ、finallyブロックが実行されて終了する。例外が発生すれば、その例外の種類に応じて、catchブロックが実行され、それから finallyブロックが実行される。

Sample.java
public class Sample {

	public static void main(String[] args) {
		methodA(null);
	}

	public static void methodA(String text) {
		methodB(text);
	}

	public static void methodB(String text) {
		methodC(text);
	}

	public static void methodC(String text) {
		try {
			System.out.println("テキストの文字数は" + text.length());
		} catch (NullPointerException e) {
			System.out.println("NullPointerExceptionをキャッチしました。");
			e.printStackTrace();// スタックトレースを表示
		} catch (Exception e) {
			System.out.println("何らかの例外をキャッチしました。");
		} catch (Error e) {
			System.out.println("その他なんらかのエラーをキャッチしました。");
		} finally {
			System.out.println("必ず実行");

		}
	}

}
結果
NullPointerExceptionをキャッチしました
java.lang.NullPointerException: Cannot invoke "String.length()" because "text" is null
	at linkedin.Sample.methodC(Sample.java:19)
	at linkedin.Sample.methodB(Sample.java:14)
	at linkedin.Sample.methodA(Sample.java:10)
	at linkedin.Sample.main(Sample.java:6)
必ず実行

実行時例外のスロー

Sample.java
public class Sample {

	public static void main(String[] args) {
		methodA("");
	}

	public static void methodA(String text) {
		methodB(text);
	}

	public static void methodB(String text) {
		methodC(text);
	}

	public static void methodC(String text) {
		if (text.equals("")) {
			throw new RuntimeException("空文字が指定されました。");// 例外を作り投げる
		}
		try {
			System.out.println("テキストの文字数は" + text.length());
		} catch (NullPointerException e) {
			throw e;// より上位のメソッドに投げて処理する
		} catch (Exception e) {
			System.out.println("何らかの例外をキャッチしました。");
		} catch (Error e) {
			System.out.println("その他なんらかのエラーをキャッチしました。");
		} finally {
			System.out.println("必ず実行");

		}
	}

}
結果
Exception in thread "main" java.lang.RuntimeException: から文字が指定されました
	at linkedin.Sample.methodC(Sample.java:19)
	at linkedin.Sample.methodB(Sample.java:14)
	at linkedin.Sample.methodA(Sample.java:10)
	at linkedin.Sample.main(Sample.java:6)

スタックトレース

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up