我设计了一个程序来输入一个数字并检查它是否满意。
import java.util.*;
public class isHappy
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter number: ");
int n = sc.nextInt();
int l = String.valueOf(n).length();
int temp=n;
int midVar=0, addVar=0, i=0;
while (temp!=4)
{
midVar=0;
for (i=l; i>0; i--)
{
addVar = temp/Math.pow(10, i);
midVar+=Math.sqrt(addVar);
}
temp = midVar;
if (temp==1)
break;
}
if (temp==1)
{
System.out.println("Happy number");
}
else
{
System.out.println("Unhappy number");
}
}
}
我承认我使用的代码并不完全干净,但它应该可以工作。它当然不应该产生输出 2。是的,就是这样:用户输入数字后,程序只在下一行显示 2。让我引导您完成执行过程。
Enter number: //program output 68 //user input 2 //program output
我必须补充一点,我实际上在编译过程中遇到了“可能的精度损失”错误,但我不相信它实际上可能是导致无法解释的输出的一个因素。另外,我问这个问题的主要目的不是为了获得如何修复代码的答案,而是为了解释为什么我会得到上述奇怪的输出。
最佳答案
快乐数字根据wikipedia是:
快乐数字
是通过以下过程定义的数字:
从任何正整数开始,用其数字的平方和替换该数字,然后重复该过程,直到该数字等于 1(它将停留在该位置),或者在不包含 1 的循环中无限循环。
此过程以 1 结尾的数字是快乐的数字,而那些不以 1 结尾的数字是不快乐的数字(或悲伤的数字)。
示例:
例如,19 是快乐的,因为相关序列是:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1。
代码:一些修改以获得快乐数字。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter number: ");
int n = sc.nextInt();
int l = String.valueOf(n).length();
int temp = n;
int midVar = 0, addVar = 0, i = 0;
while (temp != 4) {
midVar = 0;
while (temp != 0) {
addVar = temp % 10;
temp = temp / 10;
midVar += Math.pow(addVar, 2);
}
temp = midVar;
System.out.println(midVar);
if (temp == 1) {
break;
}
}
if (temp == 1) {
System.out.println("Happy number");
} else {
System.out.println("Unhappy number");
}
}
关于检查数字是否满意的 Java 程序会产生不可能的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758620/