2017-11-21 14 views
-1

8進数を通常の10進数に変更しようとしていますが、ここからコードがどこに行くのか分かりません。私がしようとしたのは、intを文字列に変更し、個々の文字を使って各場所の基数10の数字を作成することでしたが、動作しません。8進数を基数10に変換するJava

import java.util.Scanner; 
import java.lang.Math; 

class Lesson_1011_Activity{ 
public static void main(String[] args) 
{ 
    Scanner s = new Scanner (System.in); 

    System.out.println("Enter octal with less than 9 digits"); 
    int octal = s.nextInt(); 
    String ocStr = Integer.toString(octal); 

    int ocLen = ocStr.length(); 
    int flag = 0; 
    int baseTen = 0; 
    char temp; 
    int power = ocLen - 1; 
    Double tempDub; 

    if (ocStr.contains("8") || ocStr.contains("9") || ocStr.length()>8){ 
    flag++; 
    System.out.println("ERROR: Incorrect Octal Format"); 
    } 
    if (flag<1){ 
    for (int i = ocLen-1; i >0; i--){ 
     temp = ocStr.charAt(i); 
     System.out.println(temp); 
     tempDub = 1.0*Character.getNumericValue(temp); 
     System.out.println(tempDub); 
     tempDub = java.lang.Math.pow(tempDub,power); 
     System.out.println(tempDub); 
     int tempInt = Integer.valueOf(tempDub.intValue()); 
     System.out.println("Changed Character is: " + tempDub); 
     baseTen = baseTen + tempInt; 
     System.out.println("New answer so far is: " + baseTen); 
     power--; 
    } 
    System.out.println(baseTen); 
    } 

    } 
} 
+0

Integer.parseIntは、すでに独自に進値を解析することができます。 https://stackoverflow.com/a/11377988/2308683 –

+0

ありがとうございました!それらはそれらが私の記憶の中でそれらを保つことを保証するのに十分使用されると思いますか? –

+0

あなたは何を意味するのかよく分かりません。組み込みメソッドはおそらくあなた自身の実装よりも良いでしょう –

答えて

0
import java.util.Scanner; 

class Octal{ 
    public static void main(String[] args) { 
    Scanner s = new Scanner (System.in); 

    System.out.println("Enter octal number"); 
    int octal = s.nextInt(); 

    // you can add some method to check if the input is an octal number here... 

    int decNumber = octToDec(octal); 
    System.out.println(decNumber); 
} 

static int octToDec(int n){ 
    int i = 0; 
    int decimal = 0; 

    while(n != 0){ 
     decimal = decimal + (n % 10) * (int) Math.pow(8, i); 
      n = n/10; 
      i++; 
     } 

     return decimal; 
    } 
} 
+0

完全な例 –

0

あなたはこの方法を使用することができます。

Scanner input = new Scanner(System.in); 
    System.out.print("Enter number: "); 
    String oct = input.next(); 
    int result= Integer.parseInt(oct,8); 
    System.out.println(result); 

それとも、アルゴリズム方法

public static int convert(String oct) { 
    int i= 0; 
    for(int j = 0; j < oct.length(); j++) { 
      char num = oct.charAt(j);   
      num -= '0';  
      if(num<0||num>7) {   
       sysout("invalid number"); 
       return -1; 
      } 
      i *= 8;       
      i += num;      
     } 
     return i; 
    } 
} 
関連する問題