Java 当用户输入“时,如何获得前两个序列的总和?”;2“;作为「;n";?

Java 当用户输入“时,如何获得前两个序列的总和?”;2“;作为「;n";?,java,Java,顺序是:sum=1+1/2+1/4+1/9+1/16+1/25+… 当我输入“2”时,它只给我1.25的总和。当输入“2”时,它是加1+1/2,您是如何得到它的 哦,我正在学习入门级java课程,所以我们还不能使用数组或任何先进的东西 提前谢谢 import java.util.Scanner; public class Sum { public static void main(String[] args) { //declarations Sc

顺序是:
sum=1+1/2+1/4+1/9+1/16+1/25+…

当我输入“2”时,它只给我1.25的总和。当输入“2”时,它是加1+1/2,您是如何得到它的

哦,我正在学习入门级java课程,所以我们还不能使用数组或任何先进的东西

提前谢谢

import java.util.Scanner;
public class Sum
{
    public static void main(String[] args)
    {
        //declarations
        Scanner scan = new Scanner(System.in);
        double sum = 0;
        int n;

        //input
        System.out.println("Enter n: ");
        n = scan.nextInt();

        //process
        for(int counter = 1; counter <= n; counter += 1)
        {
            sum += 1.0 / (counter*counter);
        }

        System.out.println("The sum is: " + sum);
    }
}
import java.util.Scanner;
公共类金额
{
公共静态void main(字符串[]args)
{
//声明
扫描仪扫描=新扫描仪(System.in);
双和=0;
int n;
//输入
System.out.println(“输入n:”);
n=scan.nextInt();
//过程

对于(int counter=1;counter,根据for循环,生成的序列将是
1+1/(2*2)+1/(3*3)+……

因此,当您输入
2
=>
1+1/(2*2)=1+0.25=1.25

否则,您的逻辑是好的。您可以实现一些异常,但正如您所提到的,您是Java新手,您会慢慢遇到它们


愉快地学习Java:)

以下代码将解决您的问题,我使用Math.pow()使序列运行,而不是将其相乘两次

public static void main(String[] args) throws UnknownHostException {
        //declarations
        Scanner scan = new Scanner(System.in);
        //to generate this sequence we take the first two as constants and start generating from the third onwards
        double first = 1;//first number in the sequence
        double second = 0.5;//second number in the sequence
        double sum = first+second;//adding first and second
        int n;

        //input
        System.out.println("Enter n: ");
        n = scan.nextInt();
        if(n==1){
           System.out.println("The sum is: " + first);
           return;
        }
        if(n==2){
           System.out.println("The sum is: " + sum);
           return;
        }
        //process
        for(int counter = 2; counter <n; counter += 1)
        {
            sum += 1.0 / Math.pow(counter, 2);//will be computed when you enter values when n is more than 3

        }

        System.out.println("The sum is: " + sum);
     }
publicstaticvoidmain(字符串[]args)抛出UnknownHostException{
//声明
扫描仪扫描=新扫描仪(System.in);
//为了生成这个序列,我们将前两个作为常量,并从第三个开始生成
double first=1;//序列中的第一个数字
double second=0.5;//序列中的第二个数字
double sum=first+second;//将first和second相加
int n;
//输入
System.out.println(“输入n:”);
n=scan.nextInt();
如果(n==1){
System.out.println(“总和为:“+first”);
回来
}
如果(n==2){
System.out.println(“总和为:“+sum”);
回来
}
//过程

对于(int counter=2;counter,既然你说1/2必须是序列的一部分,就这样吧。(但这是一个奇怪的序列,我强烈建议你和你的教授仔细检查一下。)我假设序列的其余部分是由1/i2定义的。注意,在这些假设下,序列终止于1/(n-1)2而不是1/n2


您需要对
n==1
n>1
的情况进行特殊处理。一种可能性是,如果
n==1
,则将
sum
初始化为1;如果
n>1
,则将其初始化为1.5;否则,将其初始化为0。然后在
计数器=2
处启动循环,并将循环终止条件更改为
counter
(而不是
如果这是你的序列,那么你真的应该首先将总和设置为
1.5
,然后剩下的部分就可以了。你的序列应该是一个几何序列
1/n^2
,我认为这是个错误

public static void main(String[]args) {
     Scanner scan = new Scanner(System.in);
        double sum = 1.5;
        int n;

        //input
        System.out.println("Enter n: ");
        n = scan.nextInt();
        if(n==1)
          System.out.println("The sum is: " + 1);
        //process
        for(int counter = 2; counter <n; counter++) {
            double mul = counter*counter;
            sum += 1.0/mul ;
        }

        System.out.println("The sum is: " + sum);

}
您需要将“1”和“2”作为特殊情况进行管理

import java.util.Scanner;
public class Sum
{
    public static void main(String[] args)
    {
    //declarations

        Scanner scan = new Scanner(System.in);
        double sum = 0;
        int n;

        //input
        System.out.println("Enter n: ");
        n = scan.nextInt();

        //process
        for(int counter = 1; counter <= n; counter += 1)
        {
          if (counter == 1)
            sum = 1;
          else if (counter == 2 )
            sum += 1.0/((counter-1)+(counter-1));
          else 
            sum += 1.0 / ((counter-1)*(counter-1)); 
        }

        System.out.println("The sum is: " + sum);
    }
}
import java.util.Scanner;
公共类金额
{
公共静态void main(字符串[]args)
{
//声明
扫描仪扫描=新扫描仪(System.in);
双和=0;
int n;
//输入
System.out.println(“输入n:”);
n=scan.nextInt();
//过程

对于(int counter=1;counter你的序列项的一般公式是什么?。它看起来像1/(i^2),除了那讨厌的1/2。你确定它属于那里吗?从你的序列中我可以看出,1.25是正确的答案。我的教授把它放在那里,所以我假设他想放在那里。你的“教授”犯了一个错误。一个合理的顺序应该是
1/1+1/4+1/9+1/16+1/25
。如果你是第一个指出它的人,你可能会得到额外的分数。也许印刷错误是9应该是8,25应该是32。但是问题是如何得到1.5。如果这个顺序应该包含
1/2
,应该在上面的注释中澄清>作为一个值,请再读一次问题当我输入“2”时,它只给我1.25的和。当输入“2”时,它是加1+1/2的,你是怎么得到它的?对。你的“答案”根本没有解决OP的问题。它只是解释了当前的(不需要的)行为。是的。谢谢你的建议,但我需要它,这样当用户在提示时输入“2”时,它应该在“3”时打印出1.5输入它应该是1.75。我认为OP的代码没有问题。问题在于任务定义。你不需要使用
Math.pow
。如果你能提高的唯一能力是2,那么最好是乘以。如果我输入“1”作为“n”,我得到1.5;这应该是1。否则这就太接近了!@KoulaeMoua修复了代码,它适用于所有情况now@Bohemian我觉得用他的代码他永远无法生成序列的前两个数字,你自己试试。如果我错了,请纠正我,但当用户输入“1”他们得到了0.0。你可以简单地为其添加条件。将其作为一个特例添加。当计数器=2时,你可以只做
sum+=1.0
,当计数器=2时,你需要为求和添加1/2。我知道我可以只写
sum+=0.5;
,但我想展示与计数器的关系,以及为什么与其他情况不同。哦,我的坏朋友,没有看到其中的优点。
import java.util.Scanner;
public class Sum
{
    public static void main(String[] args)
    {
    //declarations

        Scanner scan = new Scanner(System.in);
        double sum = 0;
        int n;

        //input
        System.out.println("Enter n: ");
        n = scan.nextInt();

        //process
        for(int counter = 1; counter <= n; counter += 1)
        {
          if (counter == 1)
            sum = 1;
          else if (counter == 2 )
            sum += 1.0/((counter-1)+(counter-1));
          else 
            sum += 1.0 / ((counter-1)*(counter-1)); 
        }

        System.out.println("The sum is: " + sum);
    }
}