バックグラウンド:
クラス割り当て用の単純な基本コンバーターを作成しています。私はかなり完成に近づいていますが、変換アルゴリズムを整理して、ユーザーが入力した値 (特定の基数) を基数 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 を返します。
私の考え:
Math.pow() メソッドをデバッグすると、期待値が返されることが示されたので、charAt() メソッドに関係があるのではないかと疑っています。それがすべての異なる変数タイプと関係があるとしましょう。よくわかりません。