gpt4 book ai didi

java - 如何将一个字符串中的一个字符与另一个字符串进行比较

转载 作者:行者123 更新时间:2023-12-01 00:36:07 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




8 年前关闭。




Possible Duplicate:
How do I compare strings in Java?



我对 Java 还很陌生,为了练习,我正在尝试创建一个十六进制到十进制数的转换器,因为我已经成功地制作了一个二进制到十进制的转换器。

我遇到的问题基本上是将字符串中的给定字符与另一个字符串进行比较。这就是我定义要比较的当前字符的方式:
String current = String.valueOf(hex.charAt(i));

这就是我尝试比较角色的方式:
else if (current == "b") 
dec += 10 * (int)Math.pow(16, power);

当我尝试通过仅输入数字来运行代码时,例如12,它可以工作,但是当我尝试使用 'b' 时,出现一个奇怪的错误。这是运行程序的全部结果:
run:
Hello! Please enter a hexadecimal number.
2b
For input string: "b" // this is the weird error I don't understand
BUILD SUCCESSFUL (total time: 1 second)

这是仅通过数字转换成功运行程序的示例:
run:
Hello! Please enter a hexadecimal number.
22
22 in decimal: 34 // works fine
BUILD SUCCESSFUL (total time: 3 seconds)

对此的任何帮助将不胜感激,谢谢。

编辑:我认为如果我把整个方法放在这里会很有用。

编辑2:解决了! 我不知道我应该接受谁的答案,因为他们都非常好且乐于助人。所以很矛盾。
for (int i = hex.length() - 1; i >= 0; i--) {
String lowercaseHex = hex.toLowerCase();
char currentChar = lowercaseHex.charAt(i);

// if numbers, multiply them by 16^current power
if (currentChar == '0' ||
currentChar == '1' ||
currentChar == '2' ||
currentChar == '3' ||
currentChar == '4' ||
currentChar == '5' ||
currentChar == '6' ||
currentChar == '7' ||
currentChar == '8' ||
currentChar == '9')
// turn each number into a string then an integer, then multiply it by
// 16 to the current power.
dec += Integer.valueOf(String.valueOf((currentChar))) * (int)Math.pow(16, power);

// check for letters and multiply their values by 16^current power
else if (currentChar == 'a')
dec += 10 * (int)Math.pow(16, power);
else if (currentChar == 'b')
dec += 11 * (int)Math.pow(16, power);
else if (currentChar == 'c')
dec += 12 * (int)Math.pow(16, power);
else if (currentChar == 'd')
dec += 13 * (int)Math.pow(16, power);
else if (currentChar == 'e')
dec += 14 * (int)Math.pow(16, power);
else if (currentChar == 'f')
dec += 15 * (int)Math.pow(16, power);
else
return 0;
power++; // increment the power
}

return dec; // return decimal form
}

最佳答案

尝试将字符初始化为 char charAt() 返回的值

char current = hex.charAt(i);

然后在您的条件中使用文字字符:
else if (current == 'b') 

char是一个原语,您可以使用 == 比较它运算符(operator)。在前面的代码中,您正在比较 String使用 == , 因为 StringObject代码正在检查它们是否相同 Object如果它们与 String.equals() 具有相同的值,则不会方法会。

关于java - 如何将一个字符串中的一个字符与另一个字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14705747/

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