charAt()和Math.pow()

jclark754

背景:

我正在为类分配一个简单的基本转换器。我已经接近完成,但是需要整理转换算法以将用户输入的值(以给定的基数)转换为以10为基数的值。

试图:

import java.util.Scanner;

public class BaseConverter {
public static void main(String[] args) {
    String numIn, intro1, prompt1, prompt2, output1;
    int baseIn;
    double numOut;
    boolean flag = true;
    Scanner kb = new Scanner(System.in);

    intro1 = "This program converts values in different number bases to a decimal value.";
    prompt1 = "Type in a number base (2 - 9): ";

    while (flag == true){
        System.out.println(intro1);
        System.out.println(prompt1);
        baseIn = kb.nextInt();
        //Checking base value for outliers outside given range
        if (baseIn < 2 || baseIn > 9) {
            System.out.println("Base must be between 2 and 9");
            System.exit(1);
        }
        prompt2 = "Type in a base "+baseIn+" number: ";
        System.out.println(prompt2);
        numIn = kb.next();

        // System.out.println(numStore);
        int counter = 0;
        // Let's pretend baseIn is 3 and i starts at 3 
        for (int i = numIn.length(); i >= 1; i--){
            numOut = (numIn.charAt(i-1) * Math.pow(baseIn, counter++));
            System.out.println(numOut);
        }
    }//while
}// method
}//class

问题:

该行不返回期望值

numOut = (numIn.charAt(i-1) * Math.pow(baseIn, counter++));

例如,在字符串“ 10”中,在for循环的第一次迭代中numOut应该为(0 *(2 * 0))或零。而是返回48.0。

我的想法:

我有一个偷偷的怀疑,它与charAt()方法有关,因为调试Math.pow()方法显示它返回了预期值。假设这与所有不同的变量类型有关?我不确定

亚历克西斯C.

是的,你是对的,这charAt就是问题所在。

键入“ 10”时,根据Java用于编码字符的编码表,该字符的整数值为'0'48,而'1'整数值为49。

在此处输入图片说明

如果看一下,您会看到0被编码为0x0030 = 3*16^1 = 48,1被编码为0x0031 = 3*16^1 + 1*16^0 = 49依此类推。

如果要获取字符本身的数值,可以使用

numOut = Character.getNumericValue(numIn.charAt(i-1)) * Math.pow(baseIn, counter++);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较Math.Log和Math.Pow

来自分类Dev

如何使用Math.PI和Math.pow

来自分类Dev

使用Math.pow()函数

来自分类Dev

Math.pow的JavaScript实现

来自分类Dev

使用Math.Pow函数

来自分类Dev

inputVal上的Math.pow()

来自分类Dev

numpy.power()和math.pow()给出的结果不同

来自分类Dev

Java Math.abs与Math.pow

来自分类Dev

将Math.Pow投射为浮动

来自分类Dev

Java Math.pow无法正常工作

来自分类Dev

不确定如何使用Math.pow()

来自分类Dev

Java的Math.pow返回1错误

来自分类Dev

Java:Math.pow()返回零

来自分类Dev

Java Math.pow无法正常工作

来自分类Dev

不确定如何使用Math.pow()

来自分类Dev

在SymPy中用Math.pow替换**

来自分类Dev

使用 Math.Pow 计算每月贷款

来自分类Dev

如何使用 Math.pow 计算 bmi

来自分类Dev

Java Math.pow(x,2.0)与Math.pow(x,2.0000001)性能

来自分类Dev

Math.Pow()与Math.Exp()C#.Net

来自分类Dev

ECMAScript 2016幂运算符和Math.pow()之间的区别

来自分类Dev

pow函数和long int导致问题

来自分类Dev

pow() 行为与 Float 和 Double 不同

来自分类Dev

Java到Swift-如何在Xcode 6中使用math.pow和math.exp

来自分类Dev

Python中的幂运算-我应该更喜欢**运算符,而不是math.pow和math.sqrt吗?

来自分类Dev

Math.Pow(等等)如何实际工作

来自分类Dev

python x。** y与math.pow(x,y)的指数

来自分类Dev

Java的Math.pow是否将结果取整?

来自分类Dev

Math.Pow()的强大功能是否比if语句慢