NEWS LETTER

JAVA语言基础练习

  • Home
  • java-base.html
Scroll down

练习内容

实验内容:

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);
}
推荐文章
站内
相关 (19.1%)
14分钟

Java 数组—JAVA语言基础

数组是最为常见的一种数据结构,是相同类型的用一个标识符封装到一起的基本类型数据序列或对象序列。
(本文章参考《Java从入门到精通 第5版 明日科技》。

1
本站作者
原创文章
站内
相关 (19.1%)
16分钟

Java 字符串—JAVA语言基础

字符串是Java程序中经常处理的对象,如果字符串运用得不好,将影响到程序运行的效率。
(本文章参考《Java从入门到精通 第5版 明日科技》。故不采用

2
本站作者
原创文章
站内
相关 (19.0%)
4分钟

Java多线程-练习

要掌握并熟练应用Java语言,就需要对Java语言的基础进行充分的了解与练习。

3
i囡漫笔
原创文章
站内
相关 (19.0%)
22分钟

JAVA语言基础

要掌握并熟练应用Java语言,就需要对Java语言的基础进行充分的了解。
(本文章参考《Java从入门到精通 第5版 明日科技》。故不采用 BY-NC-

4
i囡漫笔
原创文章

--- over ---

其他文章
目录导航 置顶
  1. 1. 练习内容
  2. 2. 第一题
    1. 2.1. 1.输入
    2. 2.2. 2.创建记录数组
    3. 2.3. 3.for循环来switch16位的长整型数的各位数
    4. 2.4. 结果
    5. 2.5. 完整代码
  3. 3. 第二题
    1. 3.1. 1.输入
    2. 3.2. 2.处理
    3. 3.3. 结果
    4. 3.4. 完整代码
  4. 4. 第三题
    1. 4.1. 1.输入
    2. 4.2. 2.输出长度
    3. 4.3. 3.输出第几位为什么数
    4. 4.4. 4.逆序打印
    5. 4.5. 结果
    6. 4.6. 完整代码
  5. 5. 第四题
    1. 5.1. 1.输入
    2. 5.2. 2.使用循环
    3. 5.3. 3.处理a-f
    4. 5.4. 输出
    5. 5.5. 完整代码
请输入关键词进行搜索