解决方案:
使用正则表达式抽取数字子串;
使用Interger.parse将数字子串转为整数类型;
计算两个数字相乘即可;
import java.util.Vector;
/**
* P进制数
*
* @author Jarod Yv
*/
public final class P_NUM {
/** 数制 */
public int base = 0;
/** 数字.以Integer的形式保存在向量中 */
public VectorInteger num = null;
/** 数字间的分割符 */
private static final String SEP = ":";
public P_NUM(int base, String num) throws Exception {
init(base, num);
}
public P_NUM(int base, int num) throws Exception {
* 初始化一个P进制数
* @param base
* @param num
* 数字 这里规定每一位之间用:号分割
* @throws Exception
public void init(int base, String num) throws Exception {
// 设置数制
setBase(base);
// 设置数字,讲数字拆成Interger放入一个Vector中
if (num != null) {
this.num = new VectorInteger(10);
int beginIndex = 0;
int endIndex = -1;
Integer integer = null;
while ((endIndex = num.indexOf(SEP, beginIndex)) != -1) {
integer = Integer.valueOf(num.substring(beginIndex, endIndex));
if (integer == null || integer.intValue() = this.base
|| integer.intValue() 0) {
this.num = null;
throw new Exception("数据存在错误,请检查.");
this.num.addElement(integer);
beginIndex = endIndex + 1;
integer = null;
integer = Integer.valueOf(num.substring(beginIndex));
} else {
throw new Exception("数字为空");
* 根据十进制数,初始化一个P进制数
* 数制
* 10进制数
public void init(int base, int num) throws Exception {
do {
integer = Integer.valueOf(num % this.base);
this.num.insertElementAt(integer, 0);
num /= this.base;
} while (num 0);
* 将P进制数转换成10进制. 算法为Decimal
* @return
public int toDecimal() throws Exception {
throw new Exception("没有数据");
int result = 0;
Integer interger = null;
int step = this.num.size() - 1;// 最高次幂
for (int i = 0; i this.num.size(); i++) {
interger = this.num.elementAt(i);
if (interger != null) {
result += interger.intValue() * square(this.base, step);
step--;
interger = null;
return result;
* 设置数制
public void setBase(int base) throws Exception {
if (base = 1)
throw new Exception("数制存在错误,必须大于1");
this.base = base;
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("数制 = ");
sb.append(this.base);
sb.append('\n');
sb.append("数字 = ");
sb.append(((Integer) this.num.elementAt(i)).intValue());
sb.append(':');
sb.deleteCharAt(sb.length() - 1);
return sb.toString();
* 计算平方,此处采用递归算法
* 底数
* @param n
* 指数
* @return 平方结果
private int square(int base, int n) {
int result = base;
if (n == 0) {
return 1;
result *= square(base, n - 1);
public class Test {
public static void main(String[] args) {
try {
System.out.println("p1.toDecimal() = " + p1.toDecimal());
} catch (Exception e) {
e.printStackTrace();
原理很简单.将P进制数转换成10进制数进行计算,再将结果转换成P进制数.代码中有注释,其中toDecimal()方法将P进制数转换成10进制数,init(int base, int num)将10进制数转成P进制数.
以下代码请lz存为Mutiply.java文件,然后直接编译运行即可.
-------------
import java.util.Scanner;
public class Mutiply {
int a=0,b=0;
Scanner scanner = new Scanner(System.in);
System.out.printf("请输入两个数,以空格区分" );
a = scanner.nextInt();
b= scanner.nextInt();
System.out.println(a+"*"+b+"="+(a*b));
mport java.util.Scanner;
public class liujian {
* @param args
// TODO Auto-generated method stub
A num;
num=new A();
Scanner in = new Scanner(System.in);
System.out.print("输入第一个数:");
num.a = in.nextInt();
System.out.print("输入第二个数:");
num.b = in.nextInt();
System.out.println("两数相加的结果为:");
System.out.println(num.a+num.b);
System.out.println("两数相减的结果为:");
System.out.println(num.a-num.b);
System.out.println("两数相乘的结果为:");
System.out.println(num.a*num.b);
System.out.println("两数相除的结果为:");
System.out.println(num.a/num.b);
System.out.println("两数平方的结果为:");
class A{
int a,b;
void jjcc(int s){
System.out.println(s);
public static void main(String[] args) {
for (int i = 0; i result.length; i++) {
}
扩展资料:
javap 类文件反汇编器数据类型boolean 布尔型
byte 字节型
char 字符型
short 短整型
int 整形
long 长整形
float 单精度浮点型
double 双精度浮点型class 类null 空类型
interface 接口
以上就是土嘎嘎小编为大家整理的java代码让两个数相乘相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!