Stringクラスの比較
if文などで、値が等しいかという比較を使う場面があります
例えば・・・
【Q1】
入力した数が答えと当たっているかどうか調べるプログラム
Q1.java
import java.util.Scanner;
class Q1 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("数を入力:");
int n = stdIn.nextInt();
if (n == 5) {
System.out.print("あたり");
} else {
System.out.print("はずれ");
}
}
}
この場合は、int型の数値の比較なので
==を使って比較できます。
では文字列の比較として、次の場合を見てみましょう。
【Q2】
なぞなそプログラム
Q1.java
import java.util.Scanner;
class Q2 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("豆腐の原料は?:");
String n = stdIn.next();
if (judge.equals("大豆")) {
System.out.print("あたり");
} else {
System.out.print("はずれ");
}
}
}
比較を==ではなく、equalsを使っています。
なぜequalsなのかというと・・・
クラス型(参照型)の比較で==を使うと、内容ではなく
データが入っている「アドレス」の比較になってしまいます。