2017/12/19 CPE
題目:https://uva.onlinejudge.org/external/105/p10591.pdf
先說明這題因為不明原因,我無法將按資直接複製貼上執行。所以這題我算沒完成 冏。
import java.util.Scanner;
public class HappyNumber {
public static void main(String[] args){
int caseNum;
String num;
Scanner scanner=new Scanner(System.in);
//caseNum 要處理幾個case
caseNum=Integer.parseInt(scanner.nextLine());
//case迴圈
for(int i=0;i<caseNum;i++){
//scan一行字串並記下來S0
String S0=scanner.nextLine();
//預設boolean是happy number
boolean happy=true;
//num是目前要計算的數字 先給S0
num=S0;
//sum是平方總合用的變數
int sum;
//確認他是不是happy number的do-while迴圈
do{
sum=0;//要加總先回復到0
//各位數平方總合相加
for(int j=0;j<num.length();j++){
//chartAt第一位找到最後一位數,(int)轉型是從ASCII轉。
//ASCII的是48所以-48就從字元轉到數字了
int digit=(int)num.charAt(j)-48;
sum+=digit*digit;
}
//num我用的是string,所以要轉一下
num=String.valueOf(sum);
//確認有沒有跟S0重複,有的話是unhappy number
if(num.equals(S0)){
happy=false;
break;
}
//sum=1的話是happy number
}while(sum!=1);
//題目要求的格式
if(happy){
System.out.println("Case #"+(i+1)+": "+S0+" is a Happy number.");
}else if(!happy){
System.out.println("Case #"+(i+1)+": "+S0+" is an Unhappy number.");
}
}
scanner.close();
}
}