首页 > 代码库 > Java练习题

Java练习题

1、判断101-200之间有多少个素数,并输出所有的素数。

判断素数的方法:用一个数分别除去2到sqrt(这个数),如果能被整除,则说明这个数不是素数,反之则是素数。

 1 public class lianxi01 { 2     public static void main(String[] args) { 3         int count = 0; 4         for (int i = 101; i <= 200; i++) { 5             for (int j = 2; j <= i; j++) { 6                 if (i % j == 0 && i == j) { 7                     count++; 8                     System.out.println(i); 9                 } else if (i % j == 0 && i != j) {10                     break;11                 }12             }13         }14                 System.out.println("素数个数是:" + count);15     }16 }

 

2、打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

分析:利用for循环控制100-999个数,每个数分解成百位、十位、个位。

 1 public class lianxi02 { 2     public static void main(String[] args) { 3         int i,j=0,k; 4         int bai,shi,ge; 5         for(i=100;i<1000;i++){ 6             bai=i/100;        //求百位数 7             shi=(i/10)%10;    //求十位数 8             ge=(i%100)%10;    //求个位 9             k=bai*bai*bai+shi*shi*shi+ge*ge*ge;10             if(i==k){11                 System.out.println(i);12                 j++;13             }14         }15         System.out.println("符合条件的水仙花数为:"+j);16     }17 }

3、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5   

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:   

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。   
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。   
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

 

技术分享
 1 package com.clong.test; 2  3 import java.util.Scanner; 4  5 public class lianxi03 { 6     public static void main(String[] args) { 7         for (;;) { 8             Scanner sc = new Scanner(System.in); 9             int a, b;10             int j = 0;11             System.out.println("请输入一个整数:");12             a = sc.nextInt();13             b = a; // 保存原数14             int age[] = new int[10]; // 用来存质因数15             for (int i = 2; a != 1;) {16                 if (a % i == 0) {17                     age[j] = i;18                     j++;19                     a = a / i;20                 } else {21                     i++;22                 }23             }24             System.out.print(b + "=");25             for (int i = 0; i < j; i++) {26                 System.out.print(age[i]);27                 if(i<j-1)//判断是否是最后一位质因数,不是输出*28                     System.out.print("*");29             }30             System.out.println();31         }32     }33 }
View Code

 

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

 

技术分享
 1 public class lianxi04 { 2     public static void main(String[] args) { 3         int abcCount = 0; // 英文字母个数 4         int spaceCount = 0; // 空格键个数 5         int numCount = 0; // 数字个数 6         int otherCount = 0; // 其他字符个数 7         Scanner scan = new Scanner(System.in);// 扫描器接受控制台的输入信息 8         System.out.println("输入一组字符"); 9         String str = scan.nextLine(); // 取出控制台的一行信息,也就是你输入的信息10         char[] ch = str.toCharArray(); // 把取道的字符串变成一个char数组11         for (int i = 0; i < ch.length; i++) {12             if (Character.isLetter(ch[i])) {    // 判断是否字母13                 abcCount++;14             } else if (Character.isDigit(ch[i])) {    // 判断是否数字15                 numCount++;16             } else if (Character.isSpaceChar(ch[i])) {    // 判断是否空格键17                 spaceCount++;18             } else {    // 以上都不是则认为是其他字符19                 otherCount++;20             }21         }22         System.out.println("字母个数:" + abcCount);23         System.out.println("数字个数:" + numCount);24         System.out.println("空格个数:" + spaceCount);25         System.out.println("其他字符个数:" + otherCount);26     }27 }
View Code

 

Java练习题