質問するログイン新規登録
Java

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

Q&A

解決済

2回答

6782閲覧

数値を足して、逆順に表示するプログラムを作りたい

k499778

総合スコア599

Java

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

0グッド

0クリップ

投稿2020/04/17 04:41

編集2020/04/17 04:50

0

0

前提・実現したいこと

Javaで
数値を足して、逆順に表示するプログラムを作りたいです。

標準入力「243 364」から706と表示したいです。 243+364=607→反転させて706というからくりです。

試したこと

配列に一度詰め込み、それを逆から取り出し、それを足して表示しようと試みましたが、ソースに表すのに詰まっています。

今はここまでで詰まっていますが、逆順に取り出す方法は以下のように考えています。

Java

1import java.util.Scanner; 2 3public class Main2 { 4 public static void main(String[] args) { 5 // 入力準備 6 Scanner sc = new Scanner(System.in); 7 // 5個のデータを入力する 8 int x[] = new int[5]; 9 for (int i = 0; i < 5; i++) { 10 x[i] = sc.nextInt(); 11 } 12 // 逆順に出力 13 for (int i = 4; i >= 0; i--) { 14 System.out.print(x[i] + " "); 15 } 16 } 17 18} 19

補足情報(FW/ツールのバージョンなど)

実行環境Java10,Tomcat9,Eclipse4.8.0,MacOS High Sierra10.13.6

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

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

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

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

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

swordone

2020/04/17 04:47

何を配列に詰め込もうとしたのでしょうか。
k499778

2020/04/17 04:48

ソースコードを記載します
LouiS0616

2020/04/17 05:05

とりあえず『数値』を逆順に表示するコードを考えてみたらどうでしょう? int num = 123; ... ... // どうやって『321』と表示する? アプローチは何通りかあります。 数学的に各桁を求めても良いですし、文字列化して処理しても良いです。
k499778

2020/04/17 05:30

一応それは書いたつもりだったのですが。。
LouiS0616

2020/04/17 05:35

質問のコードは『数値の配列を逆順に表示する処理』であって、『数字列を逆順に表示する処理』ではありません。 現在のコードを最大限活かしたいのであればまず『各桁を分離する処理』を書く必要があります。
k499778

2020/04/17 05:40

なるほど!かしこまりました
guest

回答2

0

自己解決

以下のコードで出力できるようになりました。

Java

1import java.util.Scanner; 2 3public class Main2 { 4 public static void main(String[] args) { 5 // 入力準備 6 Scanner sc = new Scanner(System.in); 7 int n1 = sc.nextInt(); 8 int n2 = sc.nextInt(); 9 int n = n1 + n2; 10 11 String s = ""; 12 13 System.out.println(gyaku(n, s)); 14 } 15 16 private static String gyaku(int n, String s) { 17 while (n > 0) { 18 int i = (n % 10); 19 s = s + Integer.toString(i);; 20 n /= 10; 21 } 22 return s; 23 } 24 25} 26

投稿2020/04/17 06:16

k499778

総合スコア599

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

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

0

逆順表示

JAVA

1void gyaku(int x) 2{ 3 while(x>0){ 4 System.out.print((x%10)+'0'); 5 x/=10; 6 } 7}

スカこいたので、修正版

JAVA

1void gyaku(int x) 2{ 3 do{ 4 System.out.print(""+(x%10)); 5 x/=10; 6 }while(x>0); 7 8 System.out.println(""); // これはお好みで 9}

投稿2020/04/17 05:05

編集2020/04/17 06:43
y_waiwai

総合スコア88182

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

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

k499778

2020/04/17 06:15

逆順表示になりませんでした
y_waiwai

2020/04/17 06:24

ああ、ptintでは出力できないのね 素で書いたのでスカこきましたねw で、もう一つ課題を。 x が0のときは何も出力されません。 これどーにかしましょう
k499778

2020/04/17 06:30

ptintというより、出力内容が「243」のとき「515250」となりました。 xが0のとき考えてみます
k499778

2020/04/17 06:32

private static void gyaku(int x) { if (x == 0) return; while (x > 0) { System.out.print((x % 10) + '0'); x /= 10; } }
k499778

2020/04/17 06:32

↑こういうのではなくですか?
y_waiwai

2020/04/17 06:37

ああ、私のコードでは出力されません 後で修正版挙げておきます。 あなたのコード上で(私のも、ですがw)gyaku関数に0を与えて呼んだ場合、"0"が出力されるべきですよね? 現状のコードでは出力されません。 これを出力されるように考えてみましょう
k499778

2020/04/17 07:14 編集

今回は0の場合をあまり考慮しておらず、問いに答えられるコードを作ることが目的ですが、こうでしょうか? private static void gyaku(int x) { if (x == 0) System.out.print(0); while (x > 0) { System.out.print((x % 10) + '0'); x /= 10; } }
y_waiwai

2020/04/17 07:13

回答に追記しています。 #いろいろやってみよう
k499778

2020/04/17 07:13

修正版ありがとうございます。期待値が表示されました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問