gpt4 book ai didi

java - 将八进制数视为小数

转载 作者:行者123 更新时间:2023-12-01 09:35:34 25 4
gpt4 key购买 nike

我正在学习 JAVA,最近我在一些训练任务中遇到了同样的问题。

我有一些数字,其中一些以 0 开头。我发现这些数字是八进制,这意味着它不会是我想要的数字,或者它会给我一个错误(因为“8”或“9”,因为它们不是八进制数字)在我将其读取为 int 或 long 后...

到目前为止,我只需要使用两位数字,例如 14 或 05。我将它们视为字符串,并使用一个函数将它们转换为数字,该函数检查所有字符串数字并将它们转换为这样的数字

String numStr = "02";

if(numStr.startsWith("0")) {
int num = getNumericValue(numStr.charAt(1));
} else {
int num = Integer.parseInt(numStr);
}

现在我有很多未知的数字,其位数未知(所以可能超过 2)。我知道如果我愿意,我可以使用循环和 .substring(),但一定有更简单的方法。

有什么方法可以简单地忽略零吗?

编辑:

到目前为止,我总是将必须使用的数字编辑为字符串,因为我找不到更简单的方法来解决问题。当我有 0010 27 09 时,我必须这样声明它:
String[] 数字 = {"0010", "27", "09"};
因为如果我这样声明:
int[] 数字 = {0010, 27, 09};
数字[0]将是8而不是10,数字[2]会给我一个错误

实际上我不想使用字符串。我真正想要的是读取以零开头的数字作为数字(例如:int或long),但我希望它们是十进制的。问题是我有很多来自来源的数字。我将它们复制到代码中并将其编辑为数组的声明。但我不想将它们编辑为字符串只是为了删除零并使它们再次成为数字。

最佳答案

我不太确定你想达到什么目的。您是否希望能够读取以 基于 8 格式的 String 形式给出的 Integer(案例 1)?或者您想读取这样的String并将其解释为10-based,尽管它是基于8(情况2)?或者您只是想知道如何创建这样的 Integer 而无需手动转换它(案例 3)?

案例1:

String input = "0235";
// Cut the indicator 0
input = input.substring(1);

// Interpret the string as 8-based integer.
Integer number = Integer.parseInt(input, 8);

案例2:

String input = "0235";
// Cut the indicator 0
input = input.substring(1);

// Interpret the string as 10-based integer (default).
Integer number = Integer.parseInt(input);

案例3:

// Java interprets this as octal number
int octal = 0235;
// Java interprets this as hexadecimal number
int hexa = 0x235
// Java interprets this as decimal number
int decimal = 235

您可以通过对指标使用react,将情况 1 扩展为智能方法:

public Integer convert(final String input) {
String hexaIndicator = input.substring(0, 2);

if (hexaIndicator.equals("0x")) {
return Integer.parseInt(input.substring(2), 16);
} else {
String octaIndicator = input.substring(0, 1);

if (octaIndicator.equals("0")) {
return Integer.parseInt(input.substring(1), 8);
} else {
return Integer.parseInt(input);
}
}
}

关于java - 将八进制数视为小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38975732/

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