質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

4669閲覧

Javaを用いた回文数判定

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/12/25 09:20

編集2020/12/25 09:55

前提・実現したいこと

Javaを用いて
キーボード入力から入力された値を
逆にしてその2つを足し合わせて回文数かどうか判定するプログラムを作成したいです。
例:
N = 261
✖回文数
M = 162
N + M = 432
✖回文数
N=432
M=234
N + M = 666
○回文数
出力:666
としたいです。

以下の文では、ほとんど完成していませんが、どのようにすればよいかわからなくなってしまいました。

教えていただけたら幸いです。

該当のソースコード

package main; import java.io.BufferedReader; import java.io.InputStreamReader; public class Pastime01 { public static void main(String[] args)throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String N = br.readLine(); int M = Integer.parseInt(N); String[] n = String.valueOf(N).split(""); while(n[0] != n[n.length-1]) { int m = Integer.reverse(M); M += m; } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daregada

2020/12/25 09:43

質問中の文章が意味不明です。おそらく、あなたにしか通じていません。 > whlie文で回したいのに、 何をどう回したいのか、説明を補足する。 > それだとwhile文の中と外に必要になってしまい 何が中の外に必要なのか、説明を補足する。
退会済みユーザー

退会済みユーザー

2020/12/25 09:55

すみません そうですよね 訂正します
dodox86

2020/12/25 10:34

> 以下の文では、ほとんど完成していませんが、どのようにすればよいかわからなくなってしまいました。 コードをこねくり回す前に、頭の中で手順をまとめましょう。それ(設計)が先です。それとも、その考え方自体でつまっているということでしょうか。
退会済みユーザー

退会済みユーザー

2020/12/25 10:40

そうですね 考え方に積んでしまいました
dodox86

2020/12/25 10:47

Javaのコーディングに引きずられている気がします。他のご質問を拝見するに、機械学習系の問題の方がはるかに難しい気がするので、考え方の時点で詰む、というのが解せないのが正直なところです。
退会済みユーザー

退会済みユーザー

2020/12/25 10:53

たしかに機械学習を行なっています。 なので正直なところjavaではどのように書けばいいのか分からないです。 今後はjavaを勉強したいと考えているので何としてもjavaで書きたいと思っています ワガママですが付き合えて頂けたら嬉しいです
dodox86

2020/12/25 11:15

Daregadaさんに先に回答をいただきましたので、そちらをご覧いただければと。
dodox86

2020/12/27 03:32

今更ですが、これはPaizaのスキルチェック問題ではないでしょうか。そうであれば規約違反です。 https://paiza.jp/guide/kiyaku > 第3章 paiza > 第11条(禁止行為) > 利用者等はpaizaの利用にあたり、以下の各号のいずれかに該当する行為または該当すると当社が判断する行為をしてはなりません。 > (3)ブログ・SNS等の各種媒体(インターネット媒体に限られず、不特定多数が閲覧可能なものを全て含む。)上において、 > 当社がpaizaで出題した問題の内容、当該問題に対する解答、解答へのヒント等の示唆およびカンニング等の不正を助長する内容等を掲載する行為。
guest

回答1

0

ベストアンサー

やり方は何通りもありますが、例えば、

  • 入力した数値の桁を逆にするのではなく、文字列を逆順に並べると考えれば、StringBuilder.reverseが使える
  • 回分数の判定も、数値を文字列にして、それを逆順に並べた文字列と一致するかどうか、で行なえる
  • 回分数でなかったら、Nに足した結果を設定し、新たなMを計算する

Java

1 public static void main(String[] args) throws Exception { 2 var br = new BufferedReader(new InputStreamReader(System.in)); 3 var N = Integer.parseInt(br.readLine()); 4 while (true) { 5 var M = Integer.parseInt(new StringBuilder(String.valueOf(N)).reverse().toString()); 6 System.out.printf("N=%d\nM=%d\n", N, M); 7 8 var A = N + M; 9 System.out.printf("N + M = %d\n", A); 10 var B = Integer.parseInt(new StringBuilder(String.valueOf(A)).reverse().toString()); 11 if (A == B) { 12 break; 13 } 14 System.out.println("NG"); 15 N = A; 16 } 17 System.out.println("OK"); 18 }

投稿2020/12/25 11:01

編集2020/12/25 11:23
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/12/25 11:12

解答していただきありがとうございます。 すみません、これは私のミスなのですが、 回文数になるまで足し合わせる 回文数になればその時点でその値を表示と言うふうにしたいです。 どのように表せば良いでしょうか? 教えて頂きたいです。
Daregada

2020/12/25 11:24

Nを更新しつつ、whileで繰り返し処理を行なえばいいですね。
退会済みユーザー

退会済みユーザー

2020/12/25 11:36

ありがとうございます。
Daregada

2020/12/25 11:42

最初のコードからそうでしたが、数値以外を入力した場合や、回分数に達しないままNがintの範囲を超えてしまった場合の例外処理は別途かいてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問