输入:<整数>+/-<整数>,<进制>
输出:<整数(计算结果)>例如,用10进制计算整数123和345的相加结果。
输入:123+345,A
输出:468
说明:
1.整数用数字和字母(大小写不敏感)表示,其中字母表示超过9的数,整数可以带负号,但不支持科学计数法,也不必考虑越界。
2.进制限为2到35之间的任意进制,用一位数字或字母表示,其中字母表示超过9的进制。
3.输入字符串中包括算是和进制两部分,中间用逗号隔开,字符串中科包含空格,但空格不可将同意数字隔开,字符串中不应出现其他非法字符。java 进制 加减
输出:<整数(计算结果)>例如,用10进制计算整数123和345的相加结果。
输入:123+345,A
输出:468
说明:
1.整数用数字和字母(大小写不敏感)表示,其中字母表示超过9的数,整数可以带负号,但不支持科学计数法,也不必考虑越界。
2.进制限为2到35之间的任意进制,用一位数字或字母表示,其中字母表示超过9的进制。
3.输入字符串中包括算是和进制两部分,中间用逗号隔开,字符串中科包含空格,但空格不可将同意数字隔开,字符串中不应出现其他非法字符。java 进制 加减
解决方案 »
- javaEE/web /osgi 朋友,有性趣的请加QQ群72207201.大家一起学习一起进步!
- servlet控制线程的问题
- 请问一个java调用vc编写的动态库的问题,除JNI外是不是还有其它的办法?
- String.replaceAll 正则表达式 把"替换为\"
- 发个白痴级的问题
- jxl如何得到一个excel中一个合并的单元格到底占多少行,多少列呢 ?
- 请教
- 当insert into tb1 values(1,2,3) select * from tb1 两语句一起执行时,如何取得更新数量和结果集?
- 如何将一串字符写入文件中 (100分)
- JBUILDER环境下取图像文件GIF为何必须用全路径?!!!
- 我要哭了,一个简单的for写了1小时,新手求教育
- JDK API 文档疑惑
先用中间的算术符号分开,然后去掉前后空格,然后开始转换数值,如果出错,表示整数格式不对.
import java.util.regex.Pattern;/**
* 输入:<整数>+/-<整数>,<进制>
* 输出:<整数(计算结果)>
*
* 例如,用10进制计算整数123和345的相加结果。
* 输入:123+345,A 输出:468
*/
public class Test_10 { private static final Pattern PATTERN = Pattern.compile("^([+-]?\\d+)\\s?([+-])\\s?([+-]?\\d+)\\s?\\,\\s?([2-9A-Z])$");
private static final String RADIX = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static String compute(String message){
message = message.trim().toUpperCase();
Matcher matcher = PATTERN.matcher(message);
if(!matcher.find()){
throw new IllegalArgumentException("表达式不符:"+message);
}
if(matcher.groupCount()!=4){
throw new IllegalArgumentException("缺少必要数据:"+message);
}
int radix = RADIX.indexOf(matcher.group(4));
int result = Integer.parseInt(matcher.group(1), radix);
if("+".equals(matcher.group(2))){
result += Integer.parseInt(matcher.group(3), radix);
}else{
result -= Integer.parseInt(matcher.group(3), radix);
}
return Integer.toString(result, radix);
}
/**
* 测试用例
*/
public static void main(String[] args) {
String message = "123+345,A";
String result = compute(message);
System.out.println(result);
}}