我需要找到用户输入数字字符串的所有奇数位的总和。例如,如果输入为12235,则总和将为1 + 3 + 5 = 9.
这是我的代码到目前为止的样子:
import javax.swing.JOptionPane;
public class sumOfAllOddDigits
{
public static void main( String[]args )
{
int a;
int sum = 0;
String userinput;
userinput = JOptionPane.showInputDialog( "Enter a number. " , null);
a = Integer.parseInt(userinput);
for (int i = 0; i <= a; i++)
{
if (i % 2 == 1)
{
sum += i;
}
}
System.out.println( sum );
}
}
总和会打印一个大数字,但我不知道如何打印正确的数字。请帮忙。谢谢。
答案 0 :(得分:3)
你做错了。
您不添加数字,而是添加0到它之间的所有整数。
您直接使用<div id="container"> with <div class="container-fluid">
,从0到<meta name= "viewport"...
进行迭代,并使用userInput
来解析当前数字。
除此之外,过程是一样的。
答案 1 :(得分:3)
现在您正在查找0和输入数字之间的所有奇数之和。
相反,您需要从输入数字中获取每个数字。可以在此处找到解决方案 - How to get the separate digits of an int number?
然后,对于每个数字,如果数字是奇数,则将其添加到运行总和。
答案 2 :(得分:1)
您可以逐字符检查字符串,如果当前字符表示奇数,则添加到运行总和。最初你只是找到0和用户输入的数字之间的奇数之和,这显然是不正确的。
userinput = JOptionPane.showInputDialog( "Enter a number. " , null);
for (int i = 0; i < userInput.length(); i++)
{
char c = userInput.charAt(i);
if ((c-'0') % 2 == 1)
{
sum += (c-'0');
}
}
System.out.println( sum );
对字符进行算术运算的另一种方法是使用Character.digit(char, 10)
它更容易阅读,更安全,更不容易出错。
答案 3 :(得分:1)
使用Java 8流做到这一点很好:
int sumOdds = userInput.chars().map(n -> n - '0').filter(n -> n % 2 == 1).sum();
答案 4 :(得分:0)
此代码怎么样?
public static void main(String[] args) {
System.out.println("Enter a number");
Scanner scan = new Scanner(System.in);
//Get number as an Integer(not string) More Precise
Integer num = scan.nextInt();
//Convert Integer to String
String str = num.toString();
//convert String to char array
char[] chAr = str.toCharArray();
int sum = 0;
for(int i=0;i<chAr.length;i++){
//convert char array to integer inorder to verify 'if it is a odd number or not?'
int a = Integer.parseInt(String.valueOf(chAr[i]));
//if a is odd, then add 'a' to sum
if(a%2==1) {
sum = sum + a;
}
}
System.out.println(sum);
}