[Java基礎⑦]文字列の比較 比較演算子とequals メソッドの違い [paiza]スキルチェック見本問題 単純な条件分岐 Java編
初めに
今回、以下の問題に挑戦し、Javaでの文字列と文字列の比較について学びました。
普通に比較演算子を使用したところ不正解になってしまいました。
(以下は見本問題のため、問題、解答コードの公開は自由です。)
文字列Sが与えられます。Sがpaizaと一致する場合はYESを、
一致しない場合はNOを出力してください。
誤答 文字列の比較演算子に注意!
標準入力をlineで受け取り、==の比較演算子を使い、
"paiza"と一致するかをif文で条件分岐させました。
しかしこれだと不正解です。
(line == "paiza")が成立してくれません。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
if(line == "paiza"){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
問題点 比較演算子ではオブジェクトを比較する
問題は(line == "paiza")
の箇所です。
配列や文字列を比較する場合、比較演算子を使用すると、
同じオブジェクトを参照してればtrue、違えばfalseが返ってきます。
//同じオブジェクトを参照している場合には、
//比較演算子で比較するとtrueが返って来る
String line1 = "paiza";
String line2 = line1;
if(line1 == line2) → true
今回比較すべきなのは、「値」です。
入力された「値」がpaizaに等しいかどうかです。
使うべきは equalsメソッド
現状、(line == "paiza")
としてる箇所は、
if (line.equals("paiza")
とすることで、値の比較になります。
正解のコード
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
if(line.equals("paiza")){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
参考にしたサイト
Author And Source
この問題について([Java基礎⑦]文字列の比較 比較演算子とequals メソッドの違い [paiza]スキルチェック見本問題 単純な条件分岐 Java編), 我々は、より多くの情報をここで見つけました https://qiita.com/ki_87/items/92ea35ed5600cf55b6a8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .