如何找到用户输入数字字符串的所有奇数位的总和?

时间:2015-10-20 20:45:13

标签: java loops

我需要找到用户输入数字字符串的所有奇数位的总和。例如,如果输入为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 );
   }
}

总和会打印一个大数字,但我不知道如何打印正确的数字。请帮忙。谢谢。

5 个答案:

答案 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);



}