Java基础编程题

整理了几道用Java写的编程题,熟悉熟悉Java语言用法。

题目1

  • 题目描述: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

  • 源代码:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.Scanner;

public class demo1 {

public static void main(String[] args) {
System.out.println("请输入一行字符串:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();

String reg1 = "[\u4e00-\u9fa5]"; //检测中文
String reg2 = "[a-zA-z]"; //检测字母
String reg3 = "[0-9]"; //检测数字

int countreg1 = 0;
int countreg2 = 0;
int countreg3 = 0;
int countspace = 0;
int countothers = 0;

char[] charArr = str.toCharArray(); //将字符串转化为字符数组
String[] strArr = new String[charArr.length]; //定义一个字符串数组

for (int i=0;i<charArr.length;i++) {
strArr[i] = String.valueOf(charArr[i]); //返回字符数组参数的字符串表示形式

if (strArr[i].matches(reg1)) {
countreg1++;
}else if (strArr[i].matches(reg2)) {
countreg2++;
}else if (strArr[i].matches(reg3)) {
countreg3++;
}else if (strArr[i].matches(" ")){
countspace++;
}else {
countothers++;
}
}

System.out.println("汉字的个数:" +countreg1);
System.out.println("字母的个数:" +countreg2);
System.out.println("数字的个数:" +countreg3);
System.out.println("空格的个数:" +countspace);
System.out.println("其他字符的个数:" +countothers);

}
}

题目2

  • 题目描述: 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。

  • 源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;

public class demo2 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要参与运算的数字:");
int n = sc.nextInt();
System.out.println("请输入运算的次数:");
int num = sc.nextInt();

int flag = n; //每次用于参与运算的数
int sum = 0; //最后求得的总和

for (int i=0;i<num;i++) {
System.out.println("每次参与运算的数字是:" +flag);
sum+=flag;
n*=10;
flag+=n;
}
System.out.println("最终求得的结果是:" +sum);
}
}

题目3

  • 题目描述: 一个数如果恰好等于它的因子之和,这个数就称为 “完数 “。例如6=1+2+3 找出1000以内的所有完数。

  • 源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class demo3 {
public static void main(String[] args) {
int s;
for (int i=1;i<=1000;i++) {
s = 0;
for (int j=1;j<i;j++) {
if (i%j==0) {
s+=j;
}
}
if (s == i) {
System.out.println(s);
}
}
}
}

题目4

  • 题目描述: 将一个正整数分解质因数。例如:输入90,打印出90=233*5。

  • 源代码:

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
import java.util.Scanner;

public class demo4 {

public static void main(String[] args) {
// System.out.println(resolvePrime(259200));
System.out.println("请输入要分解的整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String str = resolvePrime(num);
System.out.println("分解后的结果为:" + str);
}

public static String resolvePrime(int num) {
//构造一个字符串构造器
StringBuilder sb = new StringBuilder(num + "=");
int i = 2;
while (i<=num) {
if (num%i == 0) {
sb.append(i + "*"); //追加字符串
num = num/i;
}else {
i++;
}
}
//toString: 返回一个与构建器或缓冲器内容相同的字符串
return sb.toString().substring(0,sb.toString().length()-1); //去除字符串缓存对象最后的一个*,然后将结果返回
}
}

题目5

  • 题目描述: 判断输入的数是不是素数。

  • 源代码:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.util.Scanner;

/*
* 解题思路:如果一个数不是素数,那么它一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根,并且成对出现。
*/

public class demo5 {
public static void main(String[] args) {
System.out.println("请输入整数:");
while (true) {
Scanner input = new Scanner(System.in);
try {
// 获取键盘输入的整数
int num = input.nextInt();
if (isPrime(num)) {
System.out.println(num + "是素数");
break;
} else {
System.out.println(num + "不是素数");
break;
}
} catch (Exception e) {
System.out.println("请输入整数:");
}
}
}

public static boolean isPrime(int x) {
boolean flag = true;

if (x < 2) {
return false; // 素数都是大于1的数
} else {
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0) {
flag = false;
break;
}
}
return flag;
}
}
}
-------------The End-------------