• 締切済み

javaでforを用いて進数を変換するプログラムについて

javaで繰り返しforを用いて10進数123を8進数に変換するプログラムを作りたく思い質問にまいりました。 以下のような説明を受けましたが、うまくいきません。 10進数123を変数xに代入する 以下の手順を何回か繰り返すfor(int i=0; i < ?; i++) a) xを8で割った余りを文字列変数yの前に追加. y = ? b) xを8で割った商をxに代入する. x = ? 変数yを表示する.System.out.println(?) 何回繰り返すかは123を手計算で8進数にした時の数字で検討せよとのことなので for(int i=0; i < 3; i++) でよいと思うのですが、 その後の手順a.bで手が止まってしまいます。 public class a { public static void main(String[] args){ int x; x=123; int y; y=7; int z; z=x%8; x=x/8; String s="y"; s=s+x; s=s+z; for (int i=0;1<3;i++){ System.out.println("y"); } } } 自分ではこのように作ってみたのですが思うように動作しません。 どの辺りをどう改善すべきなのか、どうかご指導ください。 よろしくお願い致します。

みんなの回答

  • HarukaV49
  • ベストアンサー率53% (48/89)
回答No.3

>どの辺りをどう改善すべきなのか、どうかご指導ください。 以下のコードでご確認ください。  public static void main(String[] args) {   String ans = getDecToOct( 123 );   System.out.println( ans );  }  /**   * 10進数を8進数に変換します   * @param x 10進数のint型数値   * @return 8進数に変換したString型文字列   */  public static String getDecToOct( int x ) {   String y = "";   for(int i=0, n=(int)(Math.log(x) / Math.log(8)); i<=n; i++) {    int z = x % 8;    x /= 8;    y = z + y;   }   return y;  }

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

まず、コンピュータにとって整数を 10進数、8進数として扱うとは「表示上の問題」「入出力上の問題」となります。 (ユーザー)      (コンピュータ)      (画面) 10進数の数字 -入力→ 2進数で保持 -出力→ 8進数の数字 ということです。 なので、問題文は「8進数に変換せよ」ですが、実際に変換する必要はなく、「8進数で画面に表示せよ」ということです。 y は int ではなく String (あるいは StringBuilder)として宣言し、「8進表現」を組み立てて画面に表示して下さい。 # java.lang.System.out.printf でいいじゃないか。

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.1

ではヒントを。 --------------------------------------------------------------------- 以下の手順を何回か繰り返すfor(int i=0; i < ?; i++) a) xを8で割った余りを文字列変数yの前に追加. y = ? b) xを8で割った商をxに代入する. x = ? 変数yを表示する.System.out.println(?) --------------------------------------------------------------------- ここで言う「以下の手順」とは a) と b) のはずです。 for文は "{" と "}" で括った中味を繰り返します。 以上、頑張って下さい。

関連するQ&A

専門家に質問してみよう