Java 有什么我可以改变,使它像它那样工作';应该是的

Java 有什么我可以改变,使它像它那样工作';应该是的,java,Java,有一个程序要求我编写一个java程序,要求用户键入一个正数n,并使用while循环打印奇数之和:1+3+5+7…+(2n-1)。 示例:如果输入为4,则程序将打印16 所以我所做的就是把这个代码: public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Pleas

有一个程序要求我编写一个java程序,要求用户键入一个正数n,并使用while循环打印奇数之和:1+3+5+7…+(2n-1)。
示例:如果输入为4,则程序将打印16

所以我所做的就是把这个代码:

public class Main
{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter  a positive number :");
        int n = input.nextInt();
        int i = 0;
        int sum = 0;
        while (i<=n)
        {
            sum += i ;
            i++;
        }
        System.out.println("Sum = " + sum);
    }
}
公共类主
{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入正数:”);
int n=input.nextInt();
int i=0;
整数和=0;

而(i您可以使用与
i=i+2;
相同的
i+=2;
,而不是使用
i++;

但这不会给您预期的输出。因此,必须对代码进行一些更改才能获得预期的结果。

  • 首先将
    i
    的值初始化为1
  • 然后,将
    while循环
    语句更改为

您初始化的
i
错误。它应该从1开始,因为您只想添加奇数。还可以使用
+=2
i
增加2个单位。另一个问题是while循环条件。序列中的最后一个数字将是2n-1,而不是n。因此程序将:

public class Main
{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter  a positive number :");
        int n = input.nextInt();
        int i = 1;
        int sum = 0;
        while (i <= (2 * n - 1)) // Here is the new condition for last number...
        {
            sum += i ;
            i+=2; // Here goes the 2 unit increment...
        }
        System.out.println("Sum = " + sum);
    }
}
公共类主
{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入正数:”);
int n=input.nextInt();
int i=1;
整数和=0;

而(i您可以保留一个变量,如奇数,并且在每次迭代中将其值增加2。 而且

您应该运行循环少于n次

因为你从0开始循环。然后我希望你能得到你想要的答案。下面是示例代码,可能会帮助你理解

public class Main
{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter  a positive number :");
        int n = input.nextInt();
        int i = 0;
        int sum = 0;
        int odd = 1;
        while (i<n)
        {
            sum += odd ;
            odd += 2;
            i++;
        }
        System.out.println("Sum = " + sum);
    }
}
公共类主
{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入正数:”);
int n=input.nextInt();
int i=0;
整数和=0;
int奇数=1;

while(i你不需要
-1
()
,所以
while(i<2*n)
更简单。但是使用
(2n-1)
符合问题中所示序列的上限,所以任何一种方法都是好的。@Andreas是的,如果我们将条件改为
,while(i<2*n)会更简单
。但是,在分析代码时,在以后的参考文献中,这将使代码难以理解。因此,我认为最好保持原样,因为它使逻辑更易于理解。问题是:“如果输入为4,那么程序将打印16”,这是
1+3+5+7
,即前4个奇数的总和。进行此处建议的更改将计算
1+3=4
,即不是所需的结果。感谢您指出。我几乎忘记了这一点。我已进行了必要的编辑。现在,请在您解释更改后删除下一票@andresure,并修改代码以使其正确实际上是编译的。当然,你的答案最终会是的副本。我同意,因为我打字的时候不知道Alpha Beta的答案。它只是在我发布后才更新。如果你愿意,我可能会删除我的答案,但至少删除你的否决票,因为我已经用更简洁明了的方式解释了事情。你好,欢迎光临堆栈溢出!:-)首先,你问题的标题应该更具信息性:比如“如何对Java中的前2n-1个奇数求和”。现在,谈谈你的代码:你的循环应该达到2n-1,而且应该跳过偶数。祝你学习编码好运!:-)
import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter  a positive number :");
        int n = input.nextInt();
        int i = 1;
        int sum = 0;
        while (i<=(2 * n - 1))
        {
            sum += i ;
            i += 2;
        }
        System.out.println("Sum = " + sum);
    }
}
public class Main
{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter  a positive number :");
        int n = input.nextInt();
        int i = 1;
        int sum = 0;
        while (i <= (2 * n - 1)) // Here is the new condition for last number...
        {
            sum += i ;
            i+=2; // Here goes the 2 unit increment...
        }
        System.out.println("Sum = " + sum);
    }
}
public class Main
{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter  a positive number :");
        int n = input.nextInt();
        int i = 0;
        int sum = 0;
        int odd = 1;
        while (i<n)
        {
            sum += odd ;
            odd += 2;
            i++;
        }
        System.out.println("Sum = " + sum);
    }
}