0%

JAVA语言基础练习

练习内容

实验内容:

1.输入一个16位的长整型数,利用switch语句统计其中0-9每个数字出现的次数。

2.求a+aa+aaa+…+a…a(n个)的和,其中a为1-9之间的整数。例如,当a=3,n=4时,求3+33+333+3333的和。

3.给定一个正整数m,判断它的具体位数,分别打印每一位数,再按照逆序打印出各位数字。

4.编写程序将16进制数转换为10进制数。

5.编写程序对10个整数进行排序。

第一题

1.输入

输入长整形数,并将其转换为数组,以便我们更好的用for进行统计

1
2
3
System.out.print("输入一个16位的长整型数:");
Scanner shiliu=new Scanner(System.in);
long s=shiliu.nextLong();

2.创建记录数组

创建ling数组用来记录对于的一个16位的长整型数对应的个数量,比如ling[0]代表数字0的数量、ling[1]代表数字1的数量、ling[2]代表数字2的数量……以此类推

3.for循环来switch16位的长整型数的各位数

for (int i = 0; i < arr.length; i++) {
    switch(arr[i]) {
    case '0':ling[0]++;break;
    case '1':ling[1]++;break;
    case '2':ling[2]++;break;
    case '3':ling[3]++;break;
    case '4':ling[4]++;break;
    case '5':ling[5]++;break;
    case '6':ling[6]++;break;
    case '7':ling[7]++;break;
    case '8':ling[8]++;break;
    case '9':ling[9]++;break;
    }
}

结果

第一题结果

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public static void diyiwen() {
System.out.print("输入一个16位的长整型数:");
int ling[]= {0,0,0,0,0,0,0,0,0,0};
Scanner shiliu=new Scanner(System.in);
long s=shiliu.nextLong();
String sr=Long.toString(s);
char[] arr = sr.toCharArray();
if(arr.length!=16) {
System.out.println("输入错误,程序终止");
System.exit(1);
}
for (int i = 0; i < arr.length; i++) {
switch(arr[i]) {
case '0':ling[0]++;break;
case '1':ling[1]++;break;
case '2':ling[2]++;break;
case '3':ling[3]++;break;
case '4':ling[4]++;break;
case '5':ling[5]++;break;
case '6':ling[6]++;break;
case '7':ling[7]++;break;
case '8':ling[8]++;break;
case '9':ling[9]++;break;
}
}
for (int i = 0; i < 10; i++) {
System.out.println("其中"+i+"个数为:"+ling[i]);
}
}

第二题

求a+aa+aaa+…+a…a(n个)的和,其中a为1-9之间的整数。例如,当a=3,n=4时,求3+33+333+3333的和。

1.输入

首先要输入a与n的数值

2.处理

1
2
3
4
5
6
7
8
for (int i = 1; i <= n; i++) {
jiashu=0;
for(int j=1;j<=i;j++) {
//
jiashu=jiashu+a*(int)Math.pow(10, j-1);
}
sum=sum+jiashu;
}

关键代码如上,先用for(int j=1;j<=i;j++)求出i时(i<=n)i个a的数值,比如当a=3,n=4时,i=1则有jiashu=3,i=2时jiashu=3+30……

然后将这些加数求出来后再立马相加到sum中

结果

第二题结果

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void dierwen() {
int jiashu=0;
int sum=0;
Scanner out = new Scanner(System.in);
System.out.print("请输入a的值:");
int a= out.nextInt();
System.out.print("请输入n的值:");
int n=out.nextInt();
for (int i = 1; i <= n; i++) {
jiashu=0;
for(int j=1;j<=i;j++) {
//
jiashu=jiashu+a*(int)Math.pow(10, j-1);
}
sum=sum+jiashu;
}
System.out.print("和为"+sum);
}

第三题

1.输入

1
2
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();

输入int型后我们需要比较和逆序打印出来,所以要转为数组

1
2
String mString=Integer.toString(m);
char[] arr=mString.toCharArray();

2.输出长度

使用数组特性输出长度

System.out.println("长度为"+arr.length);

3.输出第几位为什么数

使用for循环,配合数组将其“秒杀”

1
2
3
4
for (int i = 0; i < arr.length; i++) {
int j=i+1;
System.out.println("第"+j+"位数为"+arr[i]);
}

4.逆序打印

逆序打印即配合数组和循环(循环数由高到低)将其打印出来即可

1
2
3
for (int i = arr.length; i >0 ; i--) {
System.out.print(""+arr[i-1]+" ");
}

结果

第三题结果

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void disanwen() {
System.out.print("给定一个正整数m:");
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
String mString=Integer.toString(m);
char[] arr=mString.toCharArray();
System.out.println("长度为"+arr.length);
for (int i = 0; i < arr.length; i++) {
int j=i+1;
System.out.println("第"+j+"位数为"+arr[i]);
}
System.out.print("逆序打印为:");
for (int i = arr.length; i >0 ; i--) {
System.out.print(""+arr[i-1]+" ");
}
}

第四题

1.输入

1
2
3
4
System.out.print("输入一个十六进制数:");
Scanner scanner=new Scanner(System.in);
String aString=scanner.nextLine();
char[] arr=aString.toCharArray();

老办法输入转数组

2.使用循环

使用for循环for (int i = 0; i < arr.length; i++)对数组进行遍历

3.处理a-f

使用switch,例如若为a,则他的值为10*16^(所在位置-1)。其余字母同理,处理之后加在sum中就行。若不为字母则(对应数字)*16^(所在位置-1)

输出

image-20230626001858705

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void disiwen() {
long sum=0;
System.out.print("输入一个十六进制数:");
Scanner scanner=new Scanner(System.in);
String aString=scanner.nextLine();
char[] arr=aString.toCharArray();
for (int i = 0; i < arr.length; i++) {
switch(arr[i]) {
case 'a':
case 'A':sum=sum+10*(long)Math.pow(16, arr.length-i-1);break;
case 'b':
case 'B':sum=sum+11*(long)Math.pow(16, arr.length-i-1);break;
case 'c':
case 'C':sum=sum+12*(long)Math.pow(16, arr.length-i-1);break;
case 'd':
case 'D':sum=sum+13*(long)Math.pow(16, arr.length-i-1);break;
case 'e':
case 'E':sum=sum+14*(long)Math.pow(16, arr.length-i-1);break;
case 'f':
case 'F':sum=sum+15*(long)Math.pow(16, arr.length-i-1);break;
default:
String tmp=String.valueOf(arr[i]);
int tmpe=Integer.parseInt(tmp);
sum=sum+tmpe*(long)Math.pow(16, arr.length-i-1);break;
}
}
System.out.print("十进制为:"+sum);
}
技术分享,如果您觉得内容不错的话不妨进行打赏,您的支持将鼓励我继续创作!


如果你对本文有看法或更好的见解可以点击下方按钮进行评论
*注:本站为非交互网站
此按钮将会转跳至评论站点 i-nmb.chat 进行评论

欢迎关注我的其它发布渠道