1

以下のコードでは、基数 10 の 15 を基数 8 の値である 17 に変換しようとしています。しかし、代わりに、以下のプログラムは 17 ではなく 13 を返します。メソッドbaseEightは 15 を受け取りstring、Integer.parseIntbaesEight値 15 を取り、それを基数 8 の値に変換します。これは 17 である必要があります。しかし、そうではありません。何が悪いのかわからない。

import acm.program.*;

public class BaseCoversion  extends ConsoleProgran{
  public void run(){

    int a = 15; 
    String a = Integer.toString(a);
    println(a);
  }

  private int baseEight(String s) {
    return Integer.parseInt(s , 8 );
  }

} 
4

3 に答える 3

1

間違っているのは、parseInt(s,8) が、基数 8 ではなく基数 8 から文字列を解析することです。

編集:おそらく必要な関数である Integer.toOctalString があることを追加するのを忘れました。

于 2013-10-12T17:36:48.407 に答える
1

基数 8 の 15 は、実際には 13 です :)

数値の8進文字列表現が必要な場合は、使用Integer.toOctalString(number)または使用できますyourInteger.toString(8)

あなたの場合、それは次のようになります。

int a = 15; 
String s = Integer.toOctalString(a);
println(s);
于 2013-10-12T17:39:13.477 に答える