int x = new java.util.Scanner(System.in).nextInt();
例:
public class ScannerTest0
{
public static void main(String[] args)
{
int x = new java.util.Scanner(System.in).nextInt();
int y = new java.util.Scanner(System.in).nextInt();
System.out.println(x + y);
}
}
public class ScannerTest1
{
public static void main(String[] args)//メインメソッド
{
System.out.println(new java.util.Scanner(System.in).nextInt() + new java.util.Scanner(System.in).nextInt());
}
}
boolean x = new java.util.Scanner(System.in).nextBoolean(); byte x = new java.util.Scanner(System.in).nextByte(); short x = new java.util.Scanner(System.in).nextShort(); long x = new java.util.Scanner(System.in).nextLong(); float x = new java.util.Scanner(System.in).nextFloat(); double x = new java.util.Scanner(System.in).nextDouble(); String x = new java.util.Scanner(System.in).nextLine();
if(条件){条件がtrueの時に実行して欲しい文}
public class If0
{
public static void main(String[] args)
{
if(true)//()の中にboolean型のリテラルを入れた
{
System.out.println("trueなのでメッセージを表示します");//この中にはいくらでも文を入れられる、trueの場合は入れた文をすべて順番通りに行う
}//何か処理をする文ではないので;はいらない
System.out.println("プログラムを終了します");
}
}
trueなのでメッセージを表示します プログラムを終了します
public class If1
{
public static void main(String[] args)
{
int x = 6;//1つ目の数字
int y = 4;//二つ目の数字
boolean b = x + y == 10;//xとyを足し、関係演算子==で10であるならtrue、それ以外ならfalseに変化し、代入演算子=でbに代入
if(b)//boolean型の変数を入れた、この例ではtrue
{
System.out.println("trueなのでメッセージを表示します");
}
}
}
public class If2
{
public static void main(String[] args)
{
int x = 6;//1つ目の数字
int y = 4;//二つ目の数字
if(x + y == 10)//中で演算、例の場合は関係演算子==で最終的にtrueになる、()の中の場合は;はいらない
{
System.out.println("trueなのでメッセージを表示します");
}
}
}
boolean b = x + y == 10; if(!b)//boolean型の変数がtrueに変化し、論理演算子!でfalseに変化 if(x + y != 10)//合っている場合はfalseになる関係演算子 if(!(x + y == 10))//!は加減乗除の演算子より優先されるので評価後boolean型になる式を()で囲いその前に付ける、&&や||を使った複雑な式をまとめて反転させるときなどに使うテクニック
public class If3
{
public static void main(String[] args)
{
int x = 6;
int y = 4;
if(x + y == 10)
{
System.out.println("結果はtrueです");
}
else//x + y == 10がfalseになる場合
{
System.out.println("結果はfalseです");
}
}
}
public class If4
{
public static void main(String[] args)
{
int x = 6;
if(x < 5)//xが5より小さい
{
System.out.println("xは5より小さい数字です");//x < 5がfalse、つまり5以上ならこの文は表示されず、trueならこれだけ表示されて後の繋がってる2つの文はelse文まで無視される
}
else if(x > 5)//xが5より大きい場合、なおかつxが5より小さくない場合(小さかったらif文の内容を実行してここをスルーしているはずなので)
{
System.out.println("xは5より大きい数字です");//これが表示されて繋がっているelse文は無視
}
else//xが5より小さくなく、さらに大きくなかった場合
{
System.out.println("xは5です");
}
}
}
public class If5
{
public static void main(String[] args)
{
int x = new java.util.Scanner(System.in).nextInt();
//条件分岐その1、この中のどれかが必ず行われる
if(x < 0)
System.out.println("xは負の数です。");
else if(x >= 10)
System.out.println("xは二桁以上の数です。");
else if(x < 5)
System.out.println("xは5より小さい一桁の数です。");
else
System.out.println("xは5以上の一桁の数です。");
//ここまでのどれかが行われる
//条件分岐その2、else文が無いため、これらの条件のどれにも一致しない場合は何も起きない
//上記とは違う書き方だが見やすさの違いだけ
//この章の終わりに詳しく解説するが、コードの書き方って意外と自由
if(x <= 0) System.out.println("xについての情報は特にありません。");
else if (x % 10 == 0)System.out.println("xは10の倍数です。");
else if(x % 5 == 0) System.out.println("xは2の倍数ではなく5の倍数です。");//10 = 2 * 5なので最初の条件に引っかからなければ2の倍数ではない
//ここまでの条件に全て当てはまらない場合は何も起きない
//条件分岐その3、最後にelseがあるが、条件で行う内容が空の部分もあるので何も起きない事も
if(x <= 0) ; //;だけ書くと何もしない(内容の無い文)、この記載法で後に何も書かないと後の文を条件でやる内容にしたり、if文なら入れ子にしてしまったりしてしまう、この書き方は特に非推奨
else if(x % 2 == 0)System.out.println("xは偶数です。");
else System.out.println("xは奇数です。");
//xが0以下でなければどっちかが表示される
}
}
case リテラル: 例) case 0: case '字': case "文字列":
default:
break;
public class SwitchTest
{
public static void main(String[] args)
{
System.out.println("0~9の数を入力してください");
int x = new java.util.Scanner(System.in).nextInt();//xに入力した数字を代入
switch(x)
{
case 0://xが0の場合ここから開始
System.out.println("xの中身は0です");
break;//break文により、xが0の場合はここまでの文を実行してswitch文から出る
case 1://xが1の場合ここから開始、途中caseラベルがあるが、あくまで開始の目印なのでswitch文を抜けたりはしない、以下同様
case 2://xが2の場合ここから開始
case 3://xが3の場合ここから開始
case 4://xが4の場合ここから開始
System.out.println("xの中身は5未満です");
System.out.println("5以上だったら偶数かどうかも判定します");
break;//1~4の場合ラベルからここまでの文、つまりこの2つの文が実行されてswitch文から出る
case 6://xが6の場合ここから開始
case 8://xが8の場合ここから開始
System.out.println("xの中身は偶数です");
//break文が無いので、6か8の場合でもここで止まらない
case 5://xが5の場合ここから開始
case 7://xが7の場合ここから開始
case 9://xが9の場合ここから開始
System.out.println("xの中身は5以上です");//6か8の場合でもこの文が読まれる(break文がないため)
break;//5~9の場合ラベルからここまでの文、つまり1つか2つの文が実行されてswitch文から出る
default://ここのcaseラベルに無い、0~9までの数字だった場合。この下にcaseラベルがあっても問題なく、defaultの条件から除外される条件を増やす
System.out.println("範囲外です");//終端なのでわざわざbreak文を書かなくてもここから出る
}
System.out.println("プログラムを終了します");//switch文を出た後なので変数に関係なく表示
}
}
0~9の数を入力してください (数が入力できるようになる) (0を入れた場合) xの中身は0です プログラムを終了します (1、2、3、4のどれかを入れた場合) xの中身は5未満です 5以上だったら偶数かどうかも判定します プログラムを終了します (5、7、9のどれかを入れた場合) xの中身は5以上です プログラムを終了します (6、8のどれかを入れた場合) xの中身は偶数です xの中身は5以上です プログラムを終了します (10や-1など範囲外の数を入れた場合) 範囲外です プログラムを終了します
if(x == 0){(内容)}
else if(x == 1){(内容)}
else if(x == 2){(内容)}
else{(内容)}
switch(x){
case 0: (内容) break;
case 1: (内容) break;
case 2: (内容) break;
default: (内容)}
while(条件){条件がtrueの時に実行して欲しい文}
public class While0
{
public static void main(String[] args)
{
System.out.println("0と入力してください");
int x = new java.util.Scanner(System.in).nextInt();
while(x != 0)//最初に0を入れたらfalseなのでスルー、それ以外ならtrueでif文のように中身を実行、終端でここに戻ってtrueならまた実行
{
//条件でtrueが出たら中身を実行
System.out.println("0と入力するまで終わりません");
x = new java.util.Scanner(System.in).nextInt();//入力しなおし、ここで終端なので、条件の所に戻ってx != 0を演算してループするかどうか判定
}
//while文から出た場合。while文の終端にたどり着いて、条件の部分に来てfalseだったらループを抜け出しここに来る
System.out.println("プログラムを終了します");
}
}
public class While1
{
public static void main(String[] args)
{
int x = 0;
while((x += 1) <= 5)//xに1追加した後5以下かどうか確認、代入演算子の方が後で判定されるので括弧を付ける
{
System.out.println(x);
}
}
}
1 2 3 4 5
public class While2
{
public static void main(String[] args)
{
int x = 0;
do//条件文に関係なくまずここの内容をやる
{
System.out.println(x);
}
while((x += 1) <= 5);//do-while文の場合終端にセミコロン(;)が必要なので注意
}
}
0 1 2 3 4 5
while(false)
{
System.out.println("メッセージを表示");
}
do
{
System.out.println("メッセージを表示");
}
while(false);
public class For0
{
public static void main(String[] args)
{
for(int i = 0; i < 3; i++)
{
System.out.println(i);
}
}
}
//1週目:
for
(
int i = 0;//最初にiというint型の変数を定義、0で初期化
i < 3;//次にfor文の中身を行うか確認、iは0なので実行
i++//ここはここの時点では何も行われない
)
{
System.out.println(i);//iの内容を表示、i++が行われるのはこの後なので0と表示
}
//2週目:
for
(
int i = 0;//最初だけなので何もしない、以下同様
i < 3;//下記繰り返し時処理(i++)実行後for文の中身を行うか確認、iは1なので実行
i++//戻ってきたので上記繰り返し条件(i < 3)より先に実行、iに1足して1に
)
{
System.out.println(i);//iの内容、1と表示
}
//3週目:
for
(
int i = 0;
i < 3;//i++の後で、iは2なので実行
i++//戻ってきたのでiに1足して2に
)
{
System.out.println(i);//iの内容、2と表示
}
//4週目:
for
(
int i = 0;
i < 3;//i++の後で、この時点でiは3なので実行しない
i++//iに1足して3に
)
{
System.out.println(i);//繰り返し条件がfalseだったので実行されない
}
0 1 2
public class For1
{
public static void main(String[] args)
{
int[] array = {0, 1, 2, 3};
//配列の中身を表示して配列の大きさ分足す
for(int i = 0; i < array.length; i++)//lengthは1から数えるのでこの例だと4になる
{
System.out.println(array[i]);//一週目はi = 0なので、array[0]の中身である0を表示、二週目はarray[1]の中身である1を表示
array[i] += array.length;//この場合だと一週目にarray[0]に4を足す
}
//配列の中身を表示、上記で配列の大きさ分足したので中身は{4, 5, 6, 7}になる
for(int i = 0; i < array.length; i++)//for文で定義したiは上記のfor文までしか存在できないので競合しない、詳しくは後述
{
System.out.println(array[i]);//一週目はi = 0なので、array[0]の中身である4を表示、二週目はarray[1]の中身である5を表示
}
}
}
0 1 2 3 4 5 6 7
for(要素の型 変数名: 配列の変数名){内容}
例)
int[] array = {0, 1, 2};
for(int value: array){}
public class For2
{
public static void main(String[] args)
{
int[] array = {0, 1, 2, 3};
//配列の中身を表示して配列の大きさ分足す
for(int value: array)//array[i]がvalueという変数に置き換わる
{
System.out.println(value);//一週目はarray[0]の中身である0を表示、二週目はarray[1]の中身である1を表示
value += array.length;//一週目にarray[0]に4を足す、二週目はarray[1]に4を足す
}
//配列の中身を表示、上記で配列の大きさ分足したので中身は{4, 5, 6, 7}になる
for(int value: array)//for文で定義したvalueは上記のfor文までしか存在できないので競合しない、詳しくは後述
{
System.out.println(array);//一週目はarray[0]の中身である4を表示、二週目はarray[1]の中身である5を表示
}
}
}
public class Scope0
{
public static void main(String[] args)
{
if(true)
{
int i = 0;
}
else
{
int i = 1;
}
i += 1;
System.out.println(i);
}
}
Scope0.java:13: エラー: シンボルを見つけられません
i += 1;
^
シンボル: 変数 i
場所: クラス Scope0
Scope0.java:14: エラー: シンボルを見つけられません
System.out.println(i);
^
シンボル: 変数 i
場所: クラス Scope0
エラー2個
*1 相当後で説明する列挙型も使えます