gpt4 book ai didi

java - 特定数字检测器问题

转载 作者:行者123 更新时间:2023-12-02 05:55:08 24 4
gpt4 key购买 nike

我编写了一小段代码,您可以通过命令行输入一个 3 位数字,然后它会检测代码中有多少个 5。

public class fivedet {

public static void main (String[] args) {
String input = args[0];
int[] a = {0,0,0};
int x = 0;
int y = 0;
int z = 0;
for(int i = 0; i<input.length();i++) {
a[i] = input.charAt(i) - 48;
}
if(a[0]==5) {
x=5;
}

if(a[1]==5) {
y=5;
}

if(a[2]==5) {
z=5;
}

System.out.println("5 digits here:" + x + y + z);
}
}

我的主要问题是为什么我需要在 input.charAt(i) 方法之后使用 -48 项,以便 a[] 中的每个值等于我输入的实际数字。

例如我输入 java 505没有 -48 数组 a[]={53,48,53} 而不是 a[]={5,0,5} 不幸的是,我对 java 编码没有足够的经验(3个月前开始学习)来理解为什么会发生这种情况。

我也确实希望开发它能够检测不同的数字和不同长度的输入数字。

如果您能了解为什么会发生这种情况,我将不胜感激。

最佳答案

减去 48 是一种快速但有点令人困惑的从字符转换为整数的方法。恰好每个数字的字符代码与其数值相差 48。

查看此table of ASCII values 。 (Java 使用 unicode,而不是 ascii - 字符串内部是 UTF-16 - 但这些值在这种特定情况下是有效的)。所以字符“0”的值为 48;字符“9”的值为 57。

另一种方法是获取 input 的 1 个字符子字符串,然后对该字符串调用 Integer.parseInt(),将“1”转换为 1 、“2”到 2 等等

关于java - 特定数字检测器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174697/

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