如何在Java中打印回文总和?

时间:2016-02-26 03:10:06

标签: java loops

我无法在不使用蚂蚁字符串方法且仅使用数学方法的情况下打印出回文总和。我已经弄清楚如何计算总和以及所有内容,但是当我尝试打印出总和时,它会给出一个包含所有数字的列表。例如,对于数字11,输出就是这个 1 3 6 10 15 21 28 36 45 55 66

我想弄清楚如何只打印最后一个数字66,这是数字1到11的总和,以及如何使程序打印出“1到11”,因为数字是用户输入的扫描仪方法。在我的代码下面,我已经包含了我的输出应该是什么样子。非常感谢你!

import java.util.Scanner;

public class Palindrome {
    public static void main (String args []) {
        System.out.println("Please enter an integer > 0:");
        Scanner keyboard=new Scanner(System.in);
        int palindrome=keyboard.nextInt();
        int palindrome1=palindrome;
        int num;
        int sum;

        int rev=0;
        if (palindrome<=0) {
            System.out.println("Sorry, you must enter an integer greater than zero.");
        }


        while (palindrome!=0) {
            rev=rev*10 + palindrome % 10;
            palindrome/=10;
            System.out.println("the integer "+palindrome1+ " is a palindrome");
        }
        if (palindrome1==rev) {
            System.out.println("palindrome");
        } else {
            System.out.println("not");
        }
        num=1;
        sum=0;
        while (num<=palindrome1) {
            sum=sum+num;
            num++;
            System.out.println(sum);
        }
    }
}

输出应如下所示:

请输入一个整数&gt; 0:11 整数11是回文。 1到11之间的数字之和为66

3 个答案:

答案 0 :(得分:3)

您始终可以使用通用数学规则来描述0到n之间的数字之和:

enter image description here

这也更简单,因为您不必担心在循环中累积值。

在您的方案中,为了打印出值,您需要做的就是计算它。

减少,它是:

System.out.println((n*n) - n))/2);

或者,如果您只想打印要添加的最后一项,则只在循环完成后打印。

答案 1 :(得分:0)

一些建议:

您可以使用Makoto上述规则简化连续整数的总和。

在确认它是回文之前命名整数变量'palindrome'可能会造成混淆。

第24行的陈述似乎放错了。

您已指出您不希望每次循环迭代都打印总和,因此您可能希望将最后一个println移动到while循环之外。

答案 2 :(得分:-1)

将最后一个while循环更改为:

while (num<=palindrome1){

sum=sum+num;
System.out.println(num);
num++;

    }
    System.out.println(sum);
    }