【发布时间】:2015-12-16 12:22:26
【问题描述】:
我正在尝试创建一个程序,将用户输入的每个数字分类为偶数、奇数和数字零值。
结果应该是这样的:
User Input: 14005
Output:
Even Numbers: 4
Odd Numbers: 1, 5
Zero's: 0, 0
这是我写的代码,我想在每次循环检查下一个字符时使用字符串连接来添加一个新值,但不知道我的想法是否正确,会如果有人能告诉我我在哪里思考错误。
package com.craydesign;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
String number = JOptionPane.showInputDialog("Please enter a number: ");
String evenNumbers = "";
String oddNumbers = "";
String numberZero = "";
for(int i = 0; i < number.length(); i++) {
if(number.charAt(i) % 2 == 0) {
evenNumbers.concat(Integer.toString(i) + ", ");
} else if(number.charAt(i) % 2 != 0) {
oddNumbers.concat(Integer.toString(i) + ", ");
} else if (number.charAt(i) == 0){
numberZero.concat(Integer.toString(i) + ", ");
}
}
JOptionPane.showMessageDialog(null, "Even numbers: " + evenNumbers + "\n" + "Odd numbers: " + oddNumbers + "\n" + "Zero's: " + numberZero);
}
}
【问题讨论】:
-
使用
StringBuilder或StringBuffer代替String -
如果你告诉了你当前代码的确切问题/输出,它会更容易提供帮助。
-
String是不可变的。这意味着它的任何方法都不会改变它。它们只是返回一个新值。所以String.concat()不会在字符串中添加任何内容,它只是返回一个连接的字符串。所以你不应该使用它,你应该使用StringBuilder。 -
@kemkoi 查看@TAsk 的答案。您正在划分
ASCII值。代替String,使用StringBuilder。 -
使用 ArrayList
代替 String。我们不需要连接。我们可以使用 add() 函数轻松添加值