需求:
输入数字判断是否为快乐数,快乐数的定义:输入正整数,所有位数的平方和相加进行循环,是否为1,为1则为快乐数,不为1则为false
如快乐数:19,1*1+9*9=82;8*8+2*2=68;6*6+8*8=100;1*1+0*0+0*0=1
1.输入数字
2.判断是否为快乐数
package test;
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
static int max=Integer.MAX_VALUE;
public static void main(String[] args) {
//从键盘输入数字
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
//判断是不是快乐数
boolean b = PanDuan(s);
System.out.println(b);
}
public static boolean PanDuan( String isHappy){
char[] chars = isHappy.toCharArray();
int num=Integer.parseInt(isHappy);
if (num==1){
return true;
}
else if(num<1){
return false;
}
else {
int result=0;
int count=0;
while (result!=1){
//进行计算
int temp=0;
for (int i = 0; i < chars.length; i++) {
StringBuffer stringBuffer = new StringBuffer();
StringBuffer stringBuffer1 = stringBuffer.append(chars[i]);
temp = Integer.parseInt(stringBuffer1.toString()) * Integer.parseInt(stringBuffer1.toString())+temp ;
count++;
if (count>1000) {
return false;
}
}
String s1 = String.valueOf(temp);
chars=s1.toCharArray();
result=temp;
}
return true;
}
}
}
- 从键盘输入用Scanner ;
- String转char []用方法toCharArray();
- String转int用Integer.parseInt();
- int转String用String.valueOf();
- 为什么用StingBuffer? 需要将char数字中的元素提取出来先转换为Sting,再转换为int,便于参与计算。