提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
java的基础学习目前到数学函数math进度,为了巩固知识,老师布置了如下习题:
1.设计一个数字类,其中存储一个长度为200的整型数字的数组,数组中的所有成员不能大于10,用这个数组来表示一个数字。
2.设计这个数字中的一个方法,使得这个数字可以通过在个位数上加1来让数字增加,当数组中的某一个数字大于10时是可以进位的。
3.尝试设计这个数字类的一个方法,参数是另一个这个数字类的对象,可以两个数字做加法和减法运算。
4.两个数字类的对象可以进行乘法和除法运算。
5.数字类的对象中的数组的长度默认是10,当需要存储的数字位数大于数组的长度的时候,数组的长度需要扩容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、设计一个数字类,其中存储一个长度为200的整型数字的数组,数组中的所有成员不能大于10,用这个数组来表示一个数字。
1. MyNumberl类
package Math;
import java.util.Scanner;
public class MyNumber {
private int m = 200;//m为存放数组长度
private int[] array = new int[m];//新建数组array
private int t = array.length - 1;
public Number() {
}//提供无参构造函数
public Number(int m) {
this.m = m;
}//提供有参构造函数,用来方便改变m的值
public void input() {//成员方法,用来手动输入数组变量
Scanner sc = new Scanner(System.in);
System.out.print("请输入该数的位数: ");
int n = sc.nextInt();
if (n < m) {//存放数字的位数不能大于预留的数组的位数
System.out.println("请依次输入该数的数字, 用空格符隔开");
for (int i = n; i > 0; i--) {
int a = sc.nextInt();
if (a < 10 && a >= 0) {
array[array.length - i] = a;
} else {
System.out.println("输入的数字有误,请检查!!!");
}
}
} else {
System.out.println("您输入的位数太大了");
}
}
public void show(){//设计一个遍历自己的方式
for (int aa:array) {
System.out.print(aa);
}
}
}
2. Test测试类
package Math;
public class Test {
public static void main(String[] args) {
Number nu = new Number();
nu.input();
System.out.println("遍历该数组: ");
nu.show();
}
}
3. 效果图
以上为Test测试类的结果
二、设计这个数字中的一个方法,使得这个数字可以通过在个位数上加1来让数字增加,当数组中的某一个数字大于10时是可以进位的。
1. MyNumber类新增如下代码(我这里是加一个一位数)
public void addtion(int i) {//数组加 i 算法
if(i<10&&i>=0){
int temp = array[t] + i;
if (temp < 10) {
array[t] = temp;
} else {
array[t] = temp % 10;
t -= 1;
addtion(1);
}
}else{
System.out.println("请给我一个一位数");
}
}
2. Test调用
代码如下(示例):
package Math;
public class Test {
public static void main(String[] args) {
Number nu = new Number();
nu.input();
System.out.println("遍历该数组: ");
nu.show();
System.out.println();//分割线
addtion(3);
nu.show();
}
}
3. 测试截图
三、.尝试设计这个数字类的一个方法,参数是另一个这个数字类的对象,可以两个数字做加法和减法运算。
1. MyNumber类添加如下代码
public void add(int[] a,int[] b,int[] c){//数组c 用来存放a和b的和
for (int i =a.length-1; i >=0; i--) {
int temp1 = a[i] + b[i]+c[i];
if (temp1 < 10) {
c[i] = temp1;
} else if(temp1>=10&&temp1<20){
c[i] = temp1 % 10;
c[i - 1] += 1;
}else{
System.out.println("程序出错!!!");
break;
}
}
}
2. Test类添加如下代码调用
MyNumber t= new MyNumber();
t.add(nu.array,nu1.array,t.array);
System.out.println("俩数组相加后结果: ");
t.show();