ifの条件式で文字列を比較する
数値の時に使っていた「==」は文字列の比較では使えない。
文字列の時は「equals」を使う。
書き方は「==」のときと少し違っていて
変数a.equals(変数b)
と書くっぽい。
ifで変数s1とs2を比較したいときは、こんな感じで使う↓
String s1 = "tomato", s2 = "tomato";
if (s1.equals(s2)){
System.out.println("一致");
}
これ↑はs1、s2が一致するとき、if内を実行されるが
『文字列が一致しないとき』にしたい場合は
条件式の前後を「( )」で囲んで、前に「!」をつける。
!(変数a.equals(変数b))
変数s1とs2が異なるときに、if内を実行するのは↓
String s1 = "tomato", s2 = "potato";
if (!(s1.equals(s2))){
System.out.println("不一致");
}
「!」が否定のために使われることに慣れてきた感。
if内で変数に代入してエラーになった
変数に初めて値を入れるのがif内で、
その変数の値をその後の処理で使おうとしたらエラーになった。
何が言いたいのか分からないかもしれないけれど
書いている方も「ん?ん?」そうなのか?
な感覚なので気にしないでもらいたい。
エラーになったのは↓のとき
public class Yomogi{
public static void main(String[] args){
int a, b;
a = 1;
if (a == 1){
b = 1; // これと
}
System.out.println("b = " + b); // この関係がダメ
}
}
変数aには1が入るんだから、ifは100%trueになって
if内部の処理が実行されるからこれでいいだろう。
と思っていたけど、ダメでした。
if内で初めて値が入る、と言うのが問題だったみたい。
なので、事前に変数bに適当な値を入れておく。
public class Yomogi{
public static void main(String[] args){
int a, b;
a = 1;
b = 0; // 事前に0で初期化
if (a == 1){
b = 1;
}
System.out.println("b = " + b);
}
}
こうしたら上手く動いてくれた。
なるほど、javaってそういう仕様なのね。
と、理解したところで。
変数に初めて代入するのがif内であっても、
その変数をif内だけで使うのはOKだったので覚えとくことにした。
public class Yomogi{
public static void main(String[] args){
int a, b;
a = 1;
if (a == 1){
b = 1;
System.out.println("b = " + b); // if内だけで使うのはOK
}
}
}
ifを使うとき、変数に代入するタイミングは気を付けないとな。
と思ったエラーとの遭遇でした。