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

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

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

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

Q&A

解決済

2回答

168閲覧

結果が表示されません

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2018/04/09 13:24

System.out.println(d);が実行結果で表示されません。
プログラムのどこがダメなのでしょうか。プログラムとしては9進数を3進数にしたいなあと思っています。

import

1public class kadai3_1{ 2 public static void main(String[] args)throws IOException{ 3 4 BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 5 System.out.print("9進数"+" "); 6 String sinsu=br.readLine(); 7 char a; int b=0; int c=0; String d=" "; int j; 8 9 for(int i=0;i<sinsu.length();i++){ 10 a=sinsu.charAt(i); 11 if(a==9){ 12 System.out.println("9進数ではない"); 13 break; 14 } 15 } 16 17 for(j=0;j<sinsu.length()-1;j++){ 18 b+=sinsu.charAt(j)*9; 19 } 20 b+=sinsu.charAt(j); 21 22 23 while(b>=3){ 24 c=b%3; 25 d=d+c; 26 } 27 System.out.println(d); 28 29 } 30} 31 32コード

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

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

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

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

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

guest

回答2

0

こんにちは、最後のwhile文のが無限ループになっているいがに訂正すべき点がございます。
1.

if(a == 9)

のところですが厳密にいうと

if(a == '9')

です。

for(j=0;j<sinsu.length()-1;j++){ b+=sinsu.charAt(j)*9; } b+=sinsu.charAt(j);

ここは、10進数に変換するところだと思いますが、すべての位に9を掛けその合計を出しています。
9進数は1の位,9の位,81の位...となりますのですべて9を掛けると10進数に変換することができません。
(まだ訂正前の状態で質問されたのならすみません)
3.

while(b >= 3){ c = b % 3; d = d + c; }

最初の宣言でcはint型,dはString型で演算をしていますが,これだと表示結果が反転します。
例えば87を入力すると3進数では2221となりますが,表示結果が逆の1222となります。

私はこの部分をList(配列)でやりました。

以下,私が書いたソースコード(例)です。(変数名が微妙ですみません.)
少し書き換えるとm進数からn進数に変換するプログラムにすることができます。

Java

1 2import java.util.Scanner; 3import java.util.ArrayList; 4 5public class Main{ 6 public static void main(String[] args){ 7 8 Scanner sc = new Scanner(System.in); 9 String line = sc.nextLine(); 10 int judge = 1; //9進数でなければ0に変わる 11 for(int i = 0; i < line.length(); i++){ 12 char c = line.charAt(i); 13 if(c == '9'){ 14 System.out.println("9進数ではありません"); 15 judge = 0; 16 break; 17 } 18 } 19 if(judge == 1){ 20 int number10,answer; 21 number10 = m_to_ten(9,line); 22 ten_to_n(number10,3); 23 24 } 25 } 26 27 public static int m_to_ten(int m,String line){ //m進数を10進数に変換 28 29 int []number_m = new int[line.length()]; 30 for(int i = 0; i < line.length(); i++){ 31 number_m[i] = Integer.parseInt(line.substring(i,i + 1)); 32 } 33 int number10 = 0; 34 35 for(int i = 0; i < line.length(); i++){ 36 number10 += number_m[i] * ruijou(m,line.length() - i - 1); 37 } 38 39 return number10; 40 } 41 42 public static void ten_to_n(int number10,int n){ //10進数をn進数に変換 43 int answer = 0; 44 ArrayList<Integer> array = new ArrayList<>(); 45 while(number10 > 0){ 46 answer = number10 % n; 47 array.add(answer); 48 number10 /= n; 49 } 50 for(int i = array.size() - 1; i >= 0; i--){ 51 System.out.print(array.get(i)); 52 } 53 } 54 55 56 public static int ruijou(int m, int n){ //mのn乗 57 int answer = 1; 58 59 for(int i = 0; i < n; i++){ 60 answer *= m; 61 } 62 return answer; 63 } 64}

投稿2018/04/10 02:44

編集2018/04/10 02:48
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/04/10 09:44

ありがとうございます。 やってみます。
退会済みユーザー

退会済みユーザー

2018/04/10 10:01

いろいろ細かいところまで指摘して気を悪くしたのならすみません。 もっとエレガントな方法(短くて済む方法)が思いついたらまた回答しておきます。
退会済みユーザー

退会済みユーザー

2018/04/10 10:15

いえいえ、大丈夫です。 ありがとうございます。
guest

0

ベストアンサー

java

1 while(b>=3){ 2 c=b%3; 3 d=d+c; 4 }

このループに入ったが最後、bの値が変化しないので抜けられません。
結果、その次の出力が実行出来なくなっています。

投稿2018/04/09 13:28

swordone

総合スコア20649

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

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

退会済みユーザー

退会済みユーザー

2018/04/09 13:38

ほんとですね。。。。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問