我的程序让用户输入一些 5 位数字,我需要一种方法来获取那个 5 位整数并将所有数字加在一起。例如,用户输入 26506,程序执行 2+6+5+0+6 并返回 19。我相信这将通过某种循环来完成,但不确定从哪里开始。
为了澄清,这个整数可以是任何东西,只要是 5 位数。
从我的脑海中,您可以将其转换为字符串并遍历每个字符,使用 (charAt( position ) - '0' ) 累积值。我现在远离 java 编译器,但我想这应该可行。只要确保你只有数字数据。
int sum = 0;
while(input > 0){
sum += input % 10;
input = input / 10;
}
每次你取一个modulus
数字10
时,你都会得到数字ones
。并且每次将divide
您的数字加 10,您将获得除数字之外的所有ones
数字。因此,您可以使用这种方法对所有数字求和,如下所示:-
22034 % 10 = 4
22034 / 10 = 2203
2203 % 10 = 3
2203 / 10 = 220
220 % 10 = 0
220 / 10 = 22
22 % 10 = 2
22 / 10 = 2
2 % 10 = 2
把它们都加起来.. (4 + 3 + 0 + 2 + 2 = 11)
如果您的输入是字符串:
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Enter your number: ");
try{
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
String input = bufferRead.readLine();
char[] tokens;
tokens = input.toCharArray();
int total=0;
for(char i : tokens){
total += Character.getNumericValue(i);
}
System.out.println("Total: " + total);
}catch(IOException e){
e.printStackTrace();
}
}
如果您的输入是整数,简单使用
String stringValue = Integer.toString(integerValue);
并将其插入。
您需要除以取模:
26506 / 10000 = 2
26506 % 10000 = 6506
6506 / 1000 = 6
6506 % 1000 = 506
506 / 100 = 5
506 % 100 = 6
6 / 10 = 0
6 % 10 = 6
6 / 1 = 6
所以每个除法的结果是那个base10位置的数字,为了得到下一个较低的有效数字,你取模。然后重复。
有两种方法:
使用以下方法解压数字:(假设数字仍然是 5 个字符)
int unpack(int number)
{
int j = 0;
int x = 0;
for(j = 0; j < 5; j++){
x += number % 10;
number = number / 10;
}
return x;
}
将其放入字符串并选择单个字符并解析为整数:
int sumWithString(String s)
{
int sum = 0;
for(int j = 0;j < 5;j++){
try{
sum += Integer.parseInt(""+s.charAt(j));
}catch(Exception e){ }
}
return sum;
}
Scanner scanner = new Scanner(System.in);
System.out.print("Enter number: ");
String s = scanner.nextLine();
char[] a = s.toCharArray();
int total = 0;
for(char x: a){
try {
total += Integer.parseInt(""+x);
} catch (NumberFormatException e){
// do nothing
}
}
System.out.println(total);
这将省略任何非数字字符。