Java自学第四十五天
今天做pta上面的题。
代码如下
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner cn=new Scanner(System.in);
int a=cn.nextInt();
int sum=0;
if(zeng(a)!="0")
{ while(sum!=6174){
sum=huan(zeng(a))-huan(jian(a));
System.out.print(zeng(a)+" "+"-"+" "+jian(a)+" "+"= "+sumhuan(sum));
if(sum!=6174){
System.out.println();
a=sum;
}
}
}
else if(zeng(a)=="0") {
System.out.print(xt(a)+" "+"-"+" "+xt(a)+" "+"="+" 0000");
}
}
static String zeng(int a){
int[] arr=new int[4];
arr[0]=a/1000;
arr[1]=(a-arr[0]*1000)/100;
arr[2]=(a-arr[0]*1000-arr[1]*100)/10;
arr[3]=(a-arr[0]*1000-arr[1]*100-arr[2]*10);
for(int i=0;i<3;i++){
for(int j=i+1;j<4;j++){
if(arr[j]>arr[i]){
int t=0;
t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
}
}
if((arr[0]==arr[1]&&arr[0]==arr[2]&&arr[0]==arr[3]))return "0";
else {
char[] c=new char[4];
for(int i=0;i<4;i++){
c[i]=(char)(arr[i]+48);
}
return new String(c,0,4);
}
}
static String jian(int a){
int[] arr=new int[4];
arr[0]=a/1000;
arr[1]=(a-arr[0]*1000)/100;
arr[2]=(a-arr[0]*1000-arr[1]*100)/10;
arr[3]=(a-arr[0]*1000-arr[1]*100-arr[2]*10);
for(int i=0;i<3;i++){
for(int j=i+1;j<4;j++){
if(arr[j]<arr[i]){
int t=0;
t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
}
}
if((arr[0]==arr[1]&&arr[0]==arr[2]&&arr[0]==arr[3]))return "0";
else {
char[] c=new char[4];
for(int i=0;i<4;i++){
c[i]=(char)(arr[i]+48);
}
return new String(c,0,4);
}
}
static int huan(String s) {
char[] c=s.toCharArray();
int[] a=new int[s.length()];
for(int i=0;i<4;i++) {
a[i]=(int)c[i]-48;
}
return a[0]*1000+a[1]*100+a[2]*10+a[3];
}
static String xt(int a) {
char[] c=new char[4];
for(int i=0;i<4;i++) {
c[i]=(char)(a/1000+48);
}
return new String(c,0,4);
}
static String sumhuan(int a) {
int[] arr=new int[4];
arr[0]=a/1000;
arr[1]=(a-arr[0]*1000)/100;
arr[2]=(a-arr[0]*1000-arr[1]*100)/10;
arr[3]=(a-arr[0]*1000-arr[1]*100-arr[2]*10);
char[] c=new char[4];
for(int i=0;i<4;i++){
c[i]=(char)(arr[i]+48);
}
return new String(c,0,4);
}
}
这道题目我感觉我的方法不是很好,因为用了100多行才实现,我设计了几个函数用来int和String类型之间相互转换,而且这道题的格式要求很严格所以多设计了两个函数,原来只有两个函数,总体来说就是要细心。
明天继续寻找题目。