杭电Hd 2057

来源:互联网 发布:linux gradle 打包 编辑:程序博客网 时间:2024/06/05 03:15

Java菜鸟,ACM兴趣者,水平很浅,还在学习进步中,望各位大牛别见笑,呵呵。

进制转换,说难不难,说不难那你也得非常熟悉才行。作为未来的程序员,我们要的是熟练写出想要的代码,写了这道题,和大家分享。

import java.util.Scanner;

//题目是:A + B Again
public class Hd2057 {
public static void main(String[] args){
 Scanner sc=new Scanner(System.in);
 while(sc.hasNext()){
 String s1=sc.next();
 String s2=sc.next();
    long a=0,b=0,c;
 String d="";
 if(s1.charAt(0)=='+'){
  s1=s1.substring(1);     //把s1从1到最后的字符串给s1;
 }
 if(s2.charAt(0)=='+'){
  s2=s2.substring(1);     //把s2从1到最后的字符串给s2;
 }
    a=Long.parseLong(s1,16);  //把s1以16进制转化成十进制  
  
    b=Long.parseLong(s2, 16); //把s2以16进制转化成十进制
 
 c=a+b;
 if(c>=0){
 d=Long.toHexString(c);
 }
 else{
  d="-"+Long.toHexString(Math.abs(c));
 }
 for(int i=0;i<d.length();i++){
  if(d.charAt(i)>='a'&&d.charAt(i)<='z'){
   d=d.replace(d.charAt(i), change(d.charAt(i)));
  }
 }
    System.out.println(d);
 
   
}
}
public static char change(char x){
 
 if(x>='a'&&x<='z'){     //大小写转换,注意别漏了等号
  x=(char) (x-32);
 }
 return x;
 
}
}