gpt4 book ai didi

Java - 数字基数计算器(即基数 10 到基数 5)

转载 作者:行者123 更新时间:2023-12-01 18:50:14 26 4
gpt4 key购买 nike

我正在尝试制作一个计算器,可以计算和转换不同基数的数字。现在我相信这有一个非常小的问题,但我一生都找不到它。这是代码:

package basecalculator;

import java.util.Scanner;

public class BaseCalculator {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println("num?");
int number = input.nextInt();

int numLen = String.valueOf(number).length();

int[] res = new int[numLen];

toIntArr(number, res);

for (int i = 0; i < res.length; i++) {
System.out.print(res[i] + " ");
}

System.out.println(toBase10(res));

}

public static void toIntArr(int n, int [] res){
Stack stack = new Stack();

while(n > 0) {
stack.push(n % 10);
n = n / 10;
}

for (int i = 0; !stack.isEmpty(); i++) {
res[i] = stack.pop();
}
}

public static int toBase10(int [] res) {
int sum = 0;

for (int i = res.length; i >= 0; i--) {
sum += res[i] * Math.pow(10, i); //here is where it freaks out.
}

return sum;
}

这是错误:

run:
num?
456
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at basecalculator.BaseCalculator.toBase10(BaseCalculator.java:49)
at basecalculator.BaseCalculator.main(BaseCalculator.java:28)
4 5 6 Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)

谁能找出问题所在吗?

最佳答案

您应该更改此设置:

for (int i = res.length; i >= 0; i--) 

至:

for (int i = res.length - 1; i >= 0; i--) 
^^^

为什么

Java 中的数组是从零开始的。因此,例如,如果您有大小为 10 的数组,则索引将为 0, 1, 2 ... 9

所以,如果您尝试联系 array[10] (这是数组的 .length )您将得到 ArrayIndexOutOfBoundsException .

关于Java - 数字基数计算器(即基数 10 到基数 5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com