• ベストアンサー

Javaプログラミング

Javaプログラミング 課題で10進法で入力した値を2進法に計算しなおすプログラミングを書いてます。Integer.toBinaryString(int)を使わないでと指定があるのですが、まったくわかりません。おそらくfor か while を使うのだろうと思うのですが、 わかるかたいましたら教えてください。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • webpot
  • ベストアンサー率100% (1/1)
回答No.2

10進数を2進数に変換する方法は、ご存知ですよね。 ■10進数を2進数に変換する ある10進数を2で割り続けて、1もしくは0になるまで繰り返す。 その過程で出力された余りが各桁の値となる。 でこれをプログラムで表現すると、以下になります。 StringBuffer test = new StringBuffer(); if(num <= 1){ test.append(num); }else{ while(true){ test.append(num % 2); num = num / 2 ; if(num <= 1){ test.append(num); break; } } } return test.reverse().toString(); 軽くテストしましたが、そのまま使用するかは自己責任でお願いします。

KaYoukAyOu
質問者

お礼

丁寧にありがとうございます。 とても参考になりました! 返事遅れてすいません。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sincia
  • ベストアンサー率0% (0/1)
回答No.3

Integer.toBinaryString(int) がそのままなんでソース見れば答えでしょ。

参考URL:
http://www.docjar.com/html/api/java/lang/Integer.java.html
KaYoukAyOu
質問者

お礼

こんなページがあったんですね。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

プログラムを書こうとする前に、たとえば10進数で12345という数字を2進数表記に手動で変換する手順を説明できますか? 問題のプログラムはforやwhileを使って書くこともできますし、どちらも使わずに書くことも可能です。

KaYoukAyOu
質問者

お礼

手動のやり方は知ってます。 問題とりあえず解けました。 返事遅れて申し訳ありません。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Javaプログラミングをやってます。

    Javaプログラミングをやってます。 課題でライプニッツの公式 パイ = 4 * (1-1/3 + 1/5 - 1/7 ・・・ 1/(2i - 1) - 1/(2i + 1) ) をつかって i = 10000, 20000. ・・・100000の時のパイの値を表示するプログラミングを作ってるのですがまったくわかりません。 ライプニッツの公式をどういう風にforの中に組み込めばいいのでしょうか? もしくはforではないのでしょうか? わかるかたいましたら教えていただけると助かります どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

    • ベストアンサー
    • Java
  • javaのプログラミング(連続する整数の和)

    javaのプログラミング(連続する整数の和) 大学で出た課題です。 「ある自然数nを入力し、n=○+○+…+○と連続する整数の和で表すプログラミングをつくれ。」というものです。 以下に、私が考えたものを載せます。これだと連続する2つの整数の和では表すことができるのですが、3つ以上の整数の和を表すことができません。どうすればよいでしょうか? import java.io.*; public class  n { public static void main(String[] args) { int n; BufferedReader rd = new BufferedReader(new InputStreamReader(System.in)); try{ String line; System.out.print("整数:"); line = rd.readLine(); n = Integer.parseInt(line); } catch(IOException e){ System.out.println("入力エラーが発生しました。"); return; } catch(NumberFormatException e){ System.out.println("整数を入力してください。"); return; } for(int i=1;i<=n;i++){ int k=i+1; if(i+k==n) System.out.println(i+"+"+k); } } }

  • JAVAでの動く波のプログラミング

     Javaのプログラミングに関する質問です。  Javaを勉強中なのですが、sin波を動かす式がどうにも出来ません。以下は私が現状で考えたプログラミングです。 int x1, x2, y1, y2; x2 = getWidth()/5;  y2 = getHeight()/2; for (int i = 1; i <= 90; i++){ x1 = x2; y1 = y2; x2 = x0+(int)(i/30.0*200); y2 =getHeight()/2 -(int)(a*Math.sin(i/30.0*2*Math.PI/T*t)); g.drawLine(x1, y1, x2, y2); }  なんとか独学でこのようなものを考えたのですがまるでダメです。よろしければ止まっている波ではなく動く波のプログラミングの仕方をJavaで教えて頂けると幸いです。

  • javaプログラミングについて!

    ただいまjavaプログラミングの勉強をしております。 そこで数字を複数回入力させ、-1を入力すると終了し、その数字の最大、最小、平均を出力するプログラムを作っているのですが、 public static void main(String[] args) { int max = 0; int min = 100; int sum = 0; int count = 0; Scanner sc = new Scanner(System.in); System.out.println("正の整数を入力してください"); int n = sc.nextInt(); while (num01 != -1){ System.out.println("正の整数を入力してください"); sum += n; n = sc.nextInt(); count++; if(max < n) max = n; if(min > n) min = n; } System.out.println("入力された整数の最大は" + max); System.out.println("入力された整数の最小は" + min); System.out.println("入力された整数の平均は" + sum/count); } } このようなプログラミングが作れたのですが、たとえば30と10を入力したときに 最大10 最小-1 平均20 と表示されてしまいます。色々試行錯誤してみたのですが、改善されなかったため質問させて頂きました。原因と解決方法を教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • java for文プログラムについて

    java for文プログラムについて javaのfor文のプログラムにて 2つの数値をキーボード入力し入力値を+入力値とやっていきたいプログラムを組みたいのですがどんなプログラミングを行えばいいのでしょうか。 例えば入力が15 もうひとつの入力が20だとすれば15+16+17+18+19+20=105という計算を行いたいです プログラミング環境はeclipseです 分かる方教えてください。

  • Javaプログラミング

    こんにちは。Javaを最近勉強し始めたJava初心者です。これは2つの数を入力してそれそれの和、差、積、剰余を表示するものです(入力時の妥当性チェックは考慮しない。)。しかし下記のプログラムがうまく動いてくれません。どこが間違っているのかわからないのでわかる方教えて下さい。おねがいします。 import java.io.*; interface plus { int Plus(); } interface sub { int Sub(); } interface mul { int mul(); } interface mod { int Mod(); } class Compute extends plus,sub,mul,mod { int pa,pb; Compute(int a,int b) { this.pa=a; pb=b; } public int Plus() { return(pa+pb); //和を返す } public int Sub() //差を返す { return(pa-pb); } public int Mul() { return(pa*pb); //積を返す } public int Mod() { return(pa%pb); //余を返す } } class calc { public static void main(String args[]) throws IOException { InputStreamReader isp=new InputStreamReader(System.stdin); BufferedReader inp=new BufferedReader(isp); System.out.print("数1="); String sLins=inp.readLine(); //1つめの数値を入力 int a=integer.parseInt(sLine); System.out.print("数2="); String sLins=inp.readLine(); //2つめの数値を入力 int b=integer.parseInt(sLine); Compute c=new Compute(a,b); System.out.println("和:"+c.Plus()+"差:"+c.Sub()+"積:"+c.Mul()+"余:"+c.Mod()); } }

    • ベストアンサー
    • Java
  • 簡単なjavaプログラミングについて

    質問です。 今、javaプログラミングのゲームを作成せよという課題が出されています。しかし、そのプログラミングでは本当に基礎的な今年か習っておらず、ワープの方法、物体を点滅させて、流れ星をつくるというようなことしか学んでいません。 そこで質問なのですが、プログラミング初心者でも、簡単なゲームがつくれるウェブサイトなどがあれば参照したいので、教えてください。

    • ベストアンサー
    • Java
  • javaプログラミングについて

    ただいまjavaプログラム勉強中でhit&blowを制作しております。 public static void main(String[] args) { Scanner scan = new Scanner(System.in); Random rand = new Random(); int[] answer = new int[4]; int[] input = new int[4]; int[] Number = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }; int x = 10; for (int i = 0; i < 4; i++) { int select = (int) (Math.random() * x); answer[i] = Number[select]; Number[select] = Number[x - 1]; x--; } int count = 1; while (true) { System.out.println("4桁の異なる数値を入力"); int str_input = scan.nextInt(); // 代入 for (int i = 0; i < 4; i++) { input[i] = str_input; } // hit int hit = 0; for (int i = 0; i < 4; i++) { if (input[i] == answer[i]) { hit++; } } // blow int blow = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++){ if (i != j && input[i] == answer[j]) { blow++; } } } if (hit == 4) { System.out.println("4hit"); System.out.println("正解まで " + count + "回"); break; } else { System.out.println("Hit:" + hit + " Blow:" + (blow - hit)); count++; } } } } 数字が4桁で作っているのですが、数字や4桁以上を入力してしまった場合の表示は後にしようとして、先にhitとblowの判定を作ろうとしているのですが、上記で実行したところhitとblowの判定がされずhit:0blow:0と表示されてしまいます。解決策を教えてください。 自分で作ってみたものの、hit blowの判定方法があっているかも自信がないです。

    • ベストアンサー
    • Java
  • javaプログラミング

    javaプログラミングの問題わからないのでプログラム書いていただけないでしょうか。 キーボードから キーボードから 2つの実数 aと b〔double 型〕を入力し、 Math クラスのメ ソッド double pow(a, b);を用いて aの b乗を求め 画面に出力しなさい。 〔実行例〕 aの b乗を求めます 実数 aの値を入力してください 2 実数 bの値を入力してください 3 2.0 の 3.0 乗は 8.0 です

    • ベストアンサー
    • Java