Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不使用API的情况下以不同的形式将八进制转换为十进制?_Java_Decimal_Octal - Fatal编程技术网

Java 如何在不使用API的情况下以不同的形式将八进制转换为十进制?

Java 如何在不使用API的情况下以不同的形式将八进制转换为十进制?,java,decimal,octal,Java,Decimal,Octal,我试着把八进制转换成十进制,我得到了一些输出,但我不满意。有人能给出一个不使用API-s转换不同模型的想法吗 public static void main(String args[]){ System.out.print("Enter the number to convert"); Scanner ss =new Scanner(System.in); int a = ss.nextInt(); int b = ss.nextInt(); int c = ss

我试着把八进制转换成十进制,我得到了一些输出,但我不满意。有人能给出一个不使用API-s转换不同模型的想法吗

public static void main(String args[]){
   System.out.print("Enter the number to convert");
   Scanner ss =new Scanner(System.in);
   int a = ss.nextInt(); 
   int b = ss.nextInt();
   int c = ss.nextInt();
   int d = ss.nextInt();
   int  temp =(a*(8*8*8));
   int  temp1 =(b*(8*8));
   int  temp2 =(c*(8));
   int  temp3 =(d*(1));
   System.out.println("The decimal is " +"\n"  + (temp +temp1 +temp2 +temp3)) 
 }
试试这个:

public static void main(String[] args)throws IOException
{
BufferedReader reader = 
new BufferedReader(new InputStreamReader(System.in));
String oct = reader.readLine();
int i= Integer.parseInt(oct,8);
System.out.println("Decimal:=" + i);
}

我没试过,但试着弄个逻辑

然后以字符串形式输入

String s ; //for input
String answer ="";
for(a=0,b=s.length-1;b>=0;b--)
{
int digit =Integer.parseInt(s.charAt(a));
int ans = (int)(digit * Math.pow(8,b));
answer+=ans;
a++;
}

也许我的版本是你想要的:

public static void main(String[] args){

    Scanner sc = new Scanner(System.in);

    System.out.println("Please enter a number: ");
    String numberString = sc.nextLine();
    int[] eachNumbers = new int[numberString.length()];

    for(int i = 0; i < eachNumbers.length; i++){
        eachNumbers[i] = Integer.parseInt(numberString.substring(i, i+1));
    }

    int digit = 0;

    for(int i = 0; i < eachNumbers.length; i++){
        if(eachNumbers.length > 1){
            digit += (eachNumbers[i] * Math.pow(8, eachNumbers.length - (i+1)));
        }else{
            digit += (eachNumbers[i] * 1);
        }
    }
    System.out.println("The Octal " + numberString + " as Decimal is " + digit);
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“请输入一个数字:”);
字符串numberString=sc.nextLine();
int[]eachNumbers=newint[numberString.length()];
for(int i=0;i1){
数字+=(每个数字[i]*数学功率(8,每个数字长度-(i+1));
}否则{
数字+=(每个数字[i]*1);
}
}
System.out.println(“八进制”+数字字符串+”作为十进制是“+数字);
}
我知道有很多方法可以改进,但我仍在学习,希望能帮助您:)

检查扫描仪。nextInt()方法将读取整数,而不是数字。