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

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

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

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

Q&A

8回答

4772閲覧

10進数から16進数に変換

Z_G_F_LOVE

総合スコア11

Java

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

1グッド

1クリップ

投稿2015/12/15 05:05

編集2015/12/15 05:29

10進数を入力すれば16進数に変換されるというプログラムを作っているのですがいまいちうまくいきませんどこがまちがっているのでしょうか?

import java.io.IOException; import java.util.Scanner; import java.io.BufferedReader; import java.io.InputStreamReader; class test4 { public static void main (String[ ] args) throws IOException { System.out.println("文章を入力してください。"); BufferedReader input = new BufferedReader (new InputStreamReader (System.in)); String str = input.readLine( ); if ("A".equals(str)) { str ="10"; } else if (str == "64") { str ="100"; } else if (str == "3E8") { str ="1000"; } else if (str == "FF") { str ="255"; } else if (str == "100") { str ="256"; } System.out.println(" + str + "); } }

結果は

文章を入力してください。 a + str +

という風に出てきてしまいます。
どこが間違っているのでしょうか?

str = Integer.toString( 100, 8); System.out.println( str );

こちらでもできるのでしょうか?

naoyan👍を押しています

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

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

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

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

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

guest

回答8

0

これだとここに指定した文字列だけしかうけつけないのでは?
しかも現状これらすら受け付けません。
素直に文字列をInteger.parseInt()で数値解析して、
Integer.toString()で文字列変換すればいいと思います。
Integer.toStringメソッドは第2引数にn進法のnを渡せばその表記法で文字列変換します。


ほか気になるところ

  1. BufferedReaderとScannerをimportしていますがScannerのほうが使われていないようですが…
  2. よく見るとこれは16進表記→10進数にしたいということでしょうか?

java

1System.out.println(" + str + ");

これは

java

1System.out.println("" + str + "");

とでもしたいのでしょうか?意味は全くありませんが。

投稿2015/12/15 08:14

編集2015/12/15 16:08
swordone

総合スコア20651

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

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

0

投稿2015/12/15 05:09

Orlofsky

総合スコア16415

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

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

0

16進数を入力して10進数を表示するプログラムになっている所が大きな間違いです。

投稿2018/05/27 12:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

参考にはならないと思いますが、既存のメソッドを使って作りました。

java

1public static void main(String[] args) throws Exception { 2 BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 3 String bin = input.readLine(); 4 5 String hex = Integer.toHexString(Integer.valueOf(bin)); 6 System.out.println(hex); 7 8 }

投稿2018/01/18 14:22

ChinhaoChiu

総合スコア8

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

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

0

試しに続きを作ってみたので参考にでもして下さい

java

1import java.io.IOException; 2import java.util.Scanner; 3import java.io.BufferedReader; 4import java.io.InputStreamReader; 5import java.util.ArrayList; 6 7class test4 { 8 public static void main (String[ ] args) throws IOException { 9 10 ArrayList<Integer> q=new ArrayList<>(); 11 12 System.out.println("10進数を入力してください。"); 13 14 BufferedReader input = 15 new BufferedReader (new InputStreamReader (System.in)); 16 17int flag=0; 18int c=0; 19 20 21while(flag==0){ 22 23 String str = input.readLine( ); 24 25try{ 26c=Integer.parseInt(str); 27flag=1; 28}catch(Exception e){} 29 30} 31 32 33int count=16; 34while(true){ 35 36int d=c%count; 37 38 39int fl=c/count; 40 41 42c=c-d; 43q.add(d/(count/16)); 44if(fl==0){break;} 45count*=16; 46} 47 48count=1; 49 50 51for(int a=0;a<q.size();a++){ 52 53int w=q.get(q.size()-a-1); 54 55String z=""; 56 57switch(w){ 58 59case 1: 60case 2: 61case 3: 62case 4: 63case 5: 64case 6: 65case 7: 66case 8: 67case 9:z=w+""; 68break; 69case 10:z="A"; 70break; 71case 11:z="B"; 72break; 73case 12:z="C"; 74break; 75case 13:z="D"; 76break; 77case 14:z="E"; 78break; 79case 15:z="F"; 80break; 81default: 82break; 83} 84 85System.out.print(z); 86 87} 88 89 90} 91 92}

投稿2016/10/31 09:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

あと、文字列の比較は == ではなく、equals を使う必要があります。
10のところだけやっているようですが。

投稿2015/12/15 05:15

yoshi777

総合スコア674

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

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

0

" + str + "って文字列を表示しているだけ・・・
単純にSystem.out.println(str);でいいのでは?
あと、'a'と'A'は違いますd^^;

投稿2015/12/15 05:10

cateye

総合スコア6851

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

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

0

変数名が " で囲まれているからではないですか?

投稿2015/12/15 05:09

nezume

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問