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

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

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

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

Q&A

解決済

3回答

1478閲覧

剰余演算子について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2016/03/05 21:16

剰余演算子について分からないことがあります。
下記のプログラムを見てください。

import java.util.Scanner;

public static void main(String args[]){
int x;
do{
Scanner s = new Scanner(System.in);
int n = s.nextInt();
System.out.println("逆から読むと");
while(n > 0){
System.out.print(n % 10);
n /= 10;
}
System.out.println("です。");

上記では数字を逆から表示させるプログラムを作っています。
例えば、123を入力すると321と表示されるというものです。
123を入力したと考えると、System.out.print(n % 10);で1が表示されるのは分かるのですが、n /= 10の部分で12が表示され、結果的に312が表示されるのではと思うのですが、どういう間違いを私はしているのでしょうか。教えていただくとありがたいです。
※今回はソースの一部しか載せていないため、これだけだと判断できない場合は全部載せます。

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

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

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

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

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

guest

回答3

0

元のプログラムでは 0 を入力した時に 0 が表示されないです。
0 以上の入力で動作するように書き換えてみました。
(マイナスの値を入力するとプログラムが終了します)

java

1import java.util.Scanner; 2 3public class SampleX { 4 public static void main(String[] args) { 5 Scanner s = new Scanner(System.in); 6 while (true) { 7 int n = s.nextInt(); 8 if (n < 0) { 9 break; 10 } 11 12 System.out.println("逆から読むと"); 13 do { 14 System.out.print(n % 10); 15 n /= 10; 16 } while (n > 0); 17 System.out.println("です。"); 18 } 19 s.close(); 20 System.out.println("終了です。"); 21 } 22}

実行例

0 逆から読むと 0です。 1234 逆から読むと 4321です。 -1 終了です。

投稿2016/03/06 00:38

編集2016/03/06 08:02
katoy

総合スコア22322

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

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

0

ベストアンサー

下記に、プログラムコメントを記入しました。

lang

1 int n = 321; // 表示元データとループカウンタを兼用 2 while(n > 0){ /* n > 0 の間、ループ */ 3 System.out.print(n % 10); // ()内の計算結果を表示 4 /* 「%」 は余りを算出する演算子 5 321 % 10 -> 1 6 32 % 10 -> 2 7 3 % 10 -> 3 */ 8 9 n /= 10; 10 /* 「/=」 は左辺に右辺の結果を代入する「代入演算子」 11 n:321 /= 10 -> n:32 intなので小数点以下切り捨て 12 n:32 /= 10 -> n:3 13 n:3 /= 10 -> n:0 n == 0 なのでループが終了する */ 14 }

このようになります。

以上、参考になりますでしょうか?

投稿2016/03/05 23:59

Aeona

総合スコア396

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

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

0

n /= 10は「nを10で割った商をnに格納する」だけで、表示はしていません。例の場合はこの操作でnが12になり、次のループに入ります。

投稿2016/03/05 22:24

swordone

総合スコア20649

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問