ichitom
@ichitom

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Javaのエラーを解決したのですが、解決できた理由を確認したい 【Java基礎 chapter7-10】

Q&A

以下の画像のように、文字列の字数が

偶数→「文字列は偶数です」
奇数→「文字列は奇数です」

となるように出力したいのですが、コードの「if」と「else if」の行でエラーが発生してしまいました。

エラーの内容は両行とも「演算子 * は引数の型 String, int で未定義です」とのだったのですが、if文の直前の
「String text = scanner.next();」を
「int text = scanner.nextInt();」に
変えたところ、エラーが解決しました。

これは、「String text = scanner.next();」だと「if (text * 2 == 0)」を実行する際、「文章にかけ算をする」という状態になってしまうため、計算することができず、エラーになってしまっていた。という認識で合っているでしょうか?

7-10-1.png

↓エラー発生中のコード

package chapter7;

import java.util.Scanner;

public class StringCheck {

	public static void main(String[] args) {

		Scanner scanner = new Scanner (System.in);
		System.out.println("文字列を入力してください");
		
		String text = scanner.next();
		
		if (text * 2 == 0) {       ←エラー
			System.out.println("文字列は偶数です");
		} else if (text * 2 != 0) {   ←エラー
			System.out.println("文字列は奇数です");
		}
		

	}

}

↓エラー解決済みのコード

package chapter7;

import java.util.Scanner;

public class StringCheck {

	public static void main(String[] args) {

		Scanner scanner = new Scanner (System.in);
		System.out.println("文字列を入力してください");

		int text = scanner.nextInt();

		if (text * 2 == 0) {
			System.out.println("文字列は偶数です");
		} else if (text * 2 != 0) {
			System.out.println("文字列は奇数です");
		}


	}

}
0

2Answer

質問に関してはそれでいいですが,剰余を求めたいのなら%が適切な演算子では…??

あと本来Scanner.nextInt()は数値が入力されなかった場合例外を出すので,想定外の入力に対応する際は注意してください.

2Like

課題?を連投されているように見受けられますが、一つ一つ潰したほうがよろしいかと存じます。
私の回答がよくなかったのかもしれませんが。。。

1Like

Your answer might help someone💌