Java 奇数整数和

Java 奇数整数和,java,Java,我需要完成一个方法,该方法将int(max)作为参数传递,并返回从1到max(包括)的奇数整数之和 例如,sumofaddingers(5)必须返回9。i、 e.1+3+5=9 我的尝试是: int sumOfOddIntegers(int max) { int sumOdd = 0; int digit; while (max >= 1) { digit = max%10; if (digit%2 == 1) sumOdd += digit

我需要完成一个方法,该方法将int(max)作为参数传递,并返回从1到max(包括)的奇数整数之和

例如,
sumofaddingers(5)
必须返回9。i、 e.1+3+5=9

我的尝试是:

int sumOfOddIntegers(int max) {
  int sumOdd = 0; 
  int digit; 
  while (max >= 1) { 
    digit = max%10; 
    if (digit%2 == 1)
      sumOdd += digit; 
    max /= 10; 
  }

  return sumOdd;
}

但它不适用于某些输入,如5、9等。我需要在代码中更改什么?

如果您试图获取奇数的s和,则不需要执行digit=max%10;或最大/=10

查看代码中的注释,比如max=98

   /****FIRST RUN****/
   // digit = 98%10 = 8
   digit = max%10; 
   // 8 % 2 == 0
   if( digit % 2 == 1 ) 
     sumOdd += digit; 
   // max = 98/10 = 9
   max/= 10; 

   /****SECOND RUN****/
   // digit = 9%10 = 9
   digit = max%10; 
   // 9 % 2 == 1
   if( digit % 2 == 1 ) 
     // sumOdd = 1
     sumOdd += digit; 
   // max = 9/10 = 0
   max/= 10; 
您的输出为1,这不是您所期望的。 因此,为了计算奇数之和,您可以通过:

for(int i = 1; i <= max; i+= 2)
{
   oddSum += i; // assuming oddSum = 0, and max is > 0
}
for(int i=1;i 0
}

如果您试图获取奇数的s和,则不需要执行digit=max%10;或max/=10

查看代码中的注释,比如max=98

   /****FIRST RUN****/
   // digit = 98%10 = 8
   digit = max%10; 
   // 8 % 2 == 0
   if( digit % 2 == 1 ) 
     sumOdd += digit; 
   // max = 98/10 = 9
   max/= 10; 

   /****SECOND RUN****/
   // digit = 9%10 = 9
   digit = max%10; 
   // 9 % 2 == 1
   if( digit % 2 == 1 ) 
     // sumOdd = 1
     sumOdd += digit; 
   // max = 9/10 = 0
   max/= 10; 
您的输出为1,这不是您所期望的。 因此,为了计算奇数之和,您可以通过:

for(int i = 1; i <= max; i+= 2)
{
   oddSum += i; // assuming oddSum = 0, and max is > 0
}
for(int i=1;i 0
}
以下是一些代码

void calculateOdd(int max) {
  int total = 0;
  for (int i=max; i>0; i--) {
    if ( (i % 2) != 0 ) total+=i;
 }
 }

这里有一些代码

void calculateOdd(int max) {
  int total = 0;
  for (int i=max; i>0; i--) {
    if ( (i % 2) != 0 ) total+=i;
 }
 }


为什么不用简单的方法来做呢?找到从1到
max
范围内的奇数,然后将其平方。这可能会帮助您为什么不用简单的方法来做呢?找到从1到
max
范围内的奇数,然后将其平方。这可能会对您有所帮助

  • 编写一个将数字作为输入的方法,并检查它是否为奇数。如果该数字为奇数,则可能返回true,否则可能返回false(提示:奇数不能被2整除)

  • 从当前方法中,从1循环到
    max
    。将每个数字传递到此方法以检查其是否为奇数。如果为奇数,则将其添加到总和中

  • 编写一个将数字作为输入的方法,并检查它是否为奇数。如果该数字为奇数,则可能返回true,否则可能返回false(提示:奇数不能被2整除)

  • 从当前方法中,从1循环到
    max
    。将每个数字传递到此方法以检查其是否为奇数。如果为奇数,则将其添加到总和中

  • 这可能有帮助:

    import java.util.*;
    
    class oddsum {
        public static void main(String args[]) {
            int sumOdd = 0;
            int digit;
    
            System.out.println("Please Enter Number.");
            Scanner in = new Scanner(System.in);
            int i = Integer.parseInt(in.nextLine());
    
            int j;
            for(j =1; j<=i; j+=2) {
                sumOdd += j;
            }
    
            System.out.println(sumOdd);
        }
    }
    
    import java.util.*;
    类奇数和{
    公共静态void main(字符串参数[]){
    int sumOdd=0;
    整数位数;
    System.out.println(“请输入数字”);
    扫描仪输入=新扫描仪(系统输入);
    int i=Integer.parseInt(in.nextLine());
    int j;
    对于(j=1;j),这可能有帮助:

    import java.util.*;
    
    class oddsum {
        public static void main(String args[]) {
            int sumOdd = 0;
            int digit;
    
            System.out.println("Please Enter Number.");
            Scanner in = new Scanner(System.in);
            int i = Integer.parseInt(in.nextLine());
    
            int j;
            for(j =1; j<=i; j+=2) {
                sumOdd += j;
            }
    
            System.out.println(sumOdd);
        }
    }
    
    import java.util.*;
    类奇数和{
    公共静态void main(字符串参数[]){
    int sumOdd=0;
    整数位数;
    System.out.println(“请输入数字”);
    扫描仪输入=新扫描仪(系统输入);
    int i=Integer.parseInt(in.nextLine());
    int j;
    
    对于(j=1;j要使奇数整数之和从
    1
    max
    ,可以使用Java 8

    公共静态整型整数(int max){
    如果(最大i%2!=0).sum();
    }
    
    使用以下方法调用:

    • IntStream.rangeClosed(1,max)
      生成从1到
      max的
      int

    • 过滤器(i->i%2!=0)
      仅保留奇数
      int

    • sum()
      进行求和


    然后找到正确的值。

    要使奇数整数的和从
    1
    max
    ,可以使用Java 8

    公共静态整型整数(int max){
    如果(最大i%2!=0).sum();
    }
    
    使用以下方法调用:

    • IntStream.rangeClosed(1,max)
      生成从1到
      max的
      int

    • 过滤器(i->i%2!=0)
      仅保留奇数
      int

    • sum()
      进行求和


    然后找到正确的值。

    最大值是多少以及为什么最大值/=10??您的算法没有按照您在问题中所述的那样执行。目前,它正在尝试获取包含该数字的所有奇数的总和。请验证您的算法。最大值是多少以及为什么最大值/=10??您的算法没有按照您在问题中所述的那样执行。目前,它正在尝试获取包含该数字的所有奇数的总和。请验证您的算法。+1:没有给出OP的直接解,而是给出信息,以便OP可以解决其作业。+1:没有给出OP的直接解,而是给出信息,以便OP可以解决其作业。我认为他们必须这样做写一个自己的函数我想他们必须写一个自己的函数