我在不使用ant string方法而只使用数学方法的情况下打印出回文的总和时遇到了麻烦。我已经知道了如何计算和和所有的东西,但是当我尝试打印出和时,它会给我一个包含所有数字的列表。例如,对于数字11,输出为this 1 3 6 10 15 21 28 36 45 55 66
我想知道如何只打印最后一个数字66,这是数字1到11的总和,以及如何让程序打印出"1到11“,因为这些数字是用户使用scanner方法输入的。在我的代码下面,我已经包含了我的输出应该是什么样子。非常感谢!
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);
}
}
}
输出应如下所示:
请输入一个大于0: 11的整数。该整数11是回文。从1到11的数字之和是66
发布于 2016-02-26 03:16:37
您可以始终使用描述从0到n的数字之和的通用数学规则:
这也更简单,因为您不必真正担心在循环中累加值的问题。
在您的场景中,为了打印值,您需要做的就是计算这个值。
简化后,它将是:
System.out.println((n*n) - n))/2);
或者,如果您只想打印要添加的最后一项,则仅在循环完成后打印。
发布于 2016-02-26 03:32:52
以下是一些建议:
您可以使用Makoto上面所述的规则来简化连续整数的和。
在确认整型变量是回文变量之前,将其命名为“palindrome”可能会让人感到困惑。
第24行的语句似乎放错了位置。
您已经表示不希望在每次循环迭代时都打印总和,因此您可能希望将最后一个println移到while循环之外。
发布于 2016-02-26 03:24:14
将最后一个while循环更改为:
while (num<=palindrome1){
sum=sum+num;
System.out.println(num);
num++;
}
System.out.println(sum);
}
https://stackoverflow.com/questions/35642707
复制