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.2bFor input string: "b" // this is the weird error I don't understandBUILD SUCCESSFUL (total time: 1 second)这是仅通过数字转换成功运行程序的示例:run:Hello! Please enter a hexadecimal number.2222 in decimal: 34 // works fineBUILD 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初始化为char返回的charAt()值char current = hex.charAt(i);然后在您的条件中使用文字char:else if (current == 'b')由于char是基元,因此可以使用==运算符对其进行比较。在以前的代码中,您正在使用String比较==,因为String是Object,代码正在检查它们是否与Object相同,而不是与方法。
10-07 19:09