首先让我说我是一个很新的编程,这是我开始以来的第二个星期,如果你看到任何不良做法或代码中的错误,请接受我的道歉。
我想打印前n个奇数的总和。但到目前为止,我只能将奇数的总和达到给定的数字。善意的帮助。
public static void main(String[] args)
{
Scanner userInput = new Scanner(System.in);
System.out.print("Please enter the number : ");
int num1 = userInput.nextInt();
int sum = sumOfOdd(num1);
System.out.println("sum of first " +num1 + " odd numbers is " + sum);
userInput.close();
}
static int sumOfOdd(int num)
{
int sum = 0;
for (int i = 0; i <= num; i++)
{
if(i % 2 != 0)
{
sum += i;
}
}
return sum;
}
}
答案 0 :(得分:9)
您根本不必使用循环
static int sumOfOdd(int num) {
return num*num;
}
对于任何算术级数,数字之和由,
给出的Sn = 1/2×N [2α+(N-1)×d]
其中,
Sn = n个数的总和
n = n个数字
a = A.P的第一任期
d = A.P
的常见差异使用上面的公式,我们可以导出这个快速公式来计算前n个奇数的总和,
Sn(奇数)=n²
答案 1 :(得分:3)
尝试此操作时,它使用for loop递增2,仅考虑奇数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the value of n: ");
int n = scanner.nextInt();
System.out.println("The sum of the first " + n + " odd numbers is: " + sumOfOddNumbers(n));
}
public static int sumOfOddNumbers(int n) {
int sum = 0;
for(int i = 1; i < n*2; i+=2) {
sum += i;
}
return sum;
}
}
使用示例:
Enter the value of n: 5
The sum of the first 5 odd numbers is: 25
答案 2 :(得分:2)
试试这个:
static int sumOfOdd(int num) {
int sum = 0;
for (int i = 0; i < num; i++){
sum += i*2+1;
}
return sum;
}
它总结了所有奇数,直到达到极限。
使用i*2+1
,您将获得下一个奇数。然后将它添加到总和中。
使用System.out.println(sumOfOdd(4));
进行测试并获得预期结果16
(1 + 3 + 5 + 7)
答案 3 :(得分:1)
将计数器更改为向总和值添加奇数的次数...
static int sumOfOdd(int num) {
int sum = 0;
int i = 0;
int count = 0;
do {
if(i % 2 != 0) {
sum += i;
count++;
}
i++;
} while (count < num);
return sum;
}
甚至更干净:
static int sumOfOdd(int num) {
int sum=0;
for (int i=1;i<num*2;i+=2) {
sum=sum+i;
}
return sum;
}
答案 4 :(得分:0)
您应该计算您添加了多少数字,并在条件中检查您总和的数字是否小于或等于您的数字。只需在for循环中添加计数器并将条件设置为:count <= num
,它应该可以正常工作。
每次向总和中添加数字时,计数都会增加count++
。
代码假设如下:
static int sumOfOdd(int num)
{
int sum = 0;
int count = 0;
for (int i = 0, count= 0; count <= num; i++)
{
if(i % 2 != 0)
{
sum += i;
count++;
}
}
return sum;
}
我还没检查过,但它应该是正确的
答案 5 :(得分:0)
由于您不知道需要多少循环周期,因此您必须更改 for 循环的退出条件。 或者您可以使用 while 循环利用相同的退出条件。
static int sumOfOdd(int num){
int sum = 0;
int counter = 0;
int currentNumber = 0;
while (counter<num){
if(currentNumber % 2 != 0){
sum += currentNumber;
counter++;
}
currentNumber++;
}
return sum;
}
答案 6 :(得分:0)
以下是您要使用的完整代码:
public class YourClass {
public static void main(String[] args)
{
Scanner userInput = new Scanner(System.in);
System.out.print("Please enter the number : ");
int num1 = userInput.nextInt();
int sum = sumOfOdd(num1);
System.out.println("sum of first " +num1 + " odd numbers is " + sum);
userInput.close();
}
static int sumOfOdd(int num)
{
int counter = 0;
for (int i = 0;; i++)
{
int sum = 0;
if(i % 2 != 0)
{
counter++;
sum += i;
}
if(counter == num) return sum;
}
}
}
答案 7 :(得分:0)
另一种选择。
static int sumOfOdd(int num) {
int sum = 0;
int last = 2*num-1;
for (int i = 1; i <= last; i+=2){
sum += i;
}
return sum;
}
显然return num*num;
是最有效的,但如果您不得不使用循环,则此方法会避免循环内的*
。
这将是一个微小的(微小的)比以下更有效:
for (int i = 0; i < num; ++i){
sum += 2*i+1;
}