华为机试—数字逆序且求各个位数乘积
题目描述:
输入一个数字,将其倒叙输出,并输出其各个位上的乘积
输入描述:
一个正整数,保证在int范围内
输出描述
两个数字,用空格隔开,第一个数字为其倒叙的值,第二个数字是各个位上的乘积
输入样例
134
输出样例
题目描述:
输入一个数字,将其倒叙输出,并输出其各个位上的乘积
输入描述:
一个正整数,保证在int范围内
输出描述
两个数字,用空格隔开,第一个数字为其倒叙的值,第二个数字是各个位上的乘积
输入样例
134
输出样例
431 12
package com.soft.wk;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 数字逆序且求各个位数乘积
* @author wk
* 2015-04-08 10:10
*
*/
public class ReverseProduct {
public static void main(String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个数字符串:");
String str;
int result = 1;
StringBuffer sb = new StringBuffer();
try {
str = in.readLine();
String trim = str.trim();
boolean flag = isNumber(trim);
if(flag){
Integer number = Integer.parseInt(trim);//转化为int类型
if(number < Integer.MAX_VALUE && number > 0){
//逆序并计算乘积
for(int i = trim.length() - 1; i >= 0; i--){
sb.append(trim.charAt(i));
char c = trim.charAt(i);
int num = Integer.parseInt(c+"");
result = result * num;
}
}
System.out.println("逆序后:"+sb.toString()+" "+"乘积:"+result);
}else{
System.out.println("输入的不全是数字!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 输入的是否全是数字
* @param number
* @return
*/
public static boolean isNumber(String number){
String regex = "^[0-9]+$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(number);
if(!m.matches()){
return false;
}
return true;
}
}