不多说,直接上代码
注意,split函数参数是正则表达式,如果要按“.”切割字符数,其正则表达式应该是“\\.”而不是“.”,后者匹配的是所有的字符,那这程序就凉了
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
String input[]=bReader.readLine().split(" ");
String s1[]=input[0].split("\\.");
String s2[]=input[1].split("\\.");
int P[]=strings2ints(s1);
int A[]=strings2ints(s2);
int diff[];
if (give_or_get(P, A)==-1) {
System.out.println("0.0.0");
}
if (give_or_get(P, A)==1) {//要找钱的情况
diff=get_diff(A, P);
if (diff[2]<0) {
diff[1]--;
diff[2]+=29;
}
if (diff[1]<0) {
diff[0]--;
diff[1]+=17;
}
System.out.println(diff[0]+"."+diff[1]+"."+diff[2]);
}
if (give_or_get(P, A)==0) {//要找钱的情况
diff=get_diff(P, A);
if (diff[2]<0) {
diff[1]--;
diff[2]+=29;
}
if (diff[1]<0) {
diff[0]--;
diff[1]+=17;
}
System.out.println("-"+diff[0]+"."+diff[1]+"."+diff[2]);
}
}
static int [] strings2ints(String s[]){
int i[]=new int[s.length];
for (int j = 0; j < s.length; j++) {
i[j]=Integer.valueOf(s[j]);
}
return i;
}
static int [] get_diff(int ints1[],int ints2[]){
int result[]=new int[3];
for (int i = 0; i < result.length; i++) {
result[i]=ints1[i]-ints2[i];
}
return result;
}//P:Pay A:actual
static int give_or_get(int P[],int A[]){//判断钱够不够,够了返回1,不够返回0,正好返回-1
if (P[0]<A[0]) {
return 1;
}else if(P[0]>A[0]){
return 0;
}else{
if (P[1]<A[1]) {
return 1;
}else if (P[1]>A[1]) {
return 0;
}else {
if (P[2]<A[2]) {
return 1;
}else if(P[2]>A[2]){
return 0;
}else {
return -1;
}
}
}
}
}