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

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

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

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

Q&A

解決済

2回答

2698閲覧

[Java]入力した10進数を16進数に変換し表示するプログラム

ngpt

総合スコア4

Java

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

0グッド

0クリップ

投稿2021/02/03 02:28

前提・実現したいこと

Java初学者です.入力した10進数を16進数に変換し表示するプログラムを実現したいです.

発生している問題

入力した10進数を16で割り,余りをStringに変えて文字列に格納してその配列を出力しています. 配列の10~15のところをif文で拾ってA~Fに書き換える処理をしているのですが,出力時に反映されていません. ex)30を入力すると114と出力される.(1Eと出力されて欲しい)

該当のソースコード

Java

1import java.util.Scanner; 2 3public class p20 { 4 public static void main(String[] args) { 5 int i = 0; 6 int j = 0; 7 String[] num = new String[32]; 8 Scanner scanner = new Scanner(System.in); 9 10 System.out.print("Input a decimal number: "); 11 int deci = scanner.nextInt(); 12 13 14 while(deci>15) { 15 num[i++] = String.valueOf(deci%16); 16 j++; 17 deci /= 16; 18 } 19 num[i] = String.valueOf(deci); 20 21 while(j>=0) { 22 if(num[j]=="10") 23 num[j] = "A"; 24 else if(num[j]=="11") 25 num[j] = "B"; 26 else if(num[j]=="12") 27 num[j] = "C"; 28 else if(num[j]=="13") 29 num[j] = "D"; 30 else if(num[j]=="14") 31 num[j] = "E"; 32 else if(num[j]=="15") 33 num[j] = "F"; 34 j--; 35 } 36 37 System.out.print("Hexadecimal number is: "); 38 while(i>=0) 39 System.out.print(num[i--]); 40 System.out.print("\n"); 41 42 } 43} 44

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

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

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

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

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

guest

回答2

0

自分で書かなくても、printfで16進数として出力できます。

java

1System.out.printf("%X\n", deci);

投稿2021/02/03 02:56

maisumakun

総合スコア146018

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

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

ngpt

2021/02/03 04:24

回答ありがとうございます. javaにもprintfがあるんですね,参考になりました.
guest

0

ベストアンサー

java

1 if(num[j]=="10")

**Stringを==で比較してはいけません。**equalsを使ってください。

java

1 if(num[j].equals("10"))

また、この用途であれば、numをString配列にする意味がありません。
この時点ではint配列でよく、それなら==による数値比較ができます。

投稿2021/02/03 02:54

swordone

総合スコア20669

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

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

ngpt

2021/02/03 04:23

回答ありがとうございます. 最初,int配列で考えていたのですが,私の書き方では数を文字に書き直さなければならないことに気付きString配列に後から変えたために比較の部分をそのままにしていました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問