条件分岐
if文
if(条件){
処理
} else if(条件){
処理
} else{
処理
}
switch文
switch文は、指定した変数が特定の値をとる場合に、実行するコードを指定できる。
switch(変数){
case 値1:
処理
break;
case 値2:
処理
break;
default:
例外処理
break;
}
三項演算子
条件式 ? trueの場合の式 : falseの場合の式;
繰り返し処理
for文
for(初期化式;条件式;変化式){
// 繰り返しの中で実行される処理
...
}
初期化式は、最初の一回だけ実行される式。初期化式では変数の宣言もできるが、初期化式で宣言した変数のスコープ(使用できる範囲)は、for文のブロック内であることに注意する。
繰り返しが一度実行されると、変化式を一回評価し、変数の値を変換する。その上で条件式を評価し、trueであれば再びブロック内の処理を行い、falseだった場合には繰り返し処理を終了する。
例: 和の計算
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の参照
for(int i=0;i < list.size();i++){
// 繰り返しの中で実行される処理
...
}
例
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 文の前で宣言などを行う。
ブロックの中で条件式が変化するような処理を行うことに注意。
for文→繰り返しの回数が決まっている場合
while文→繰り返しの回数が決まっておらず、条件を満たしている限り処理を繰り返したい場合
continue
:それ以降の処理がスキップされて、次の繰り返しに移る。
break
: while文を抜けて、次の処理へ移る。
HashSetを参照する
Iteraterを用いる
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を参照する
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(条件式);
例
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
ブロックが実行される。
例
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)
必ず実行
実行時例外のスロー
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)