程序1
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
import java.util.Scanner;
/**
* 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
* 分析 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21只
*/
public class Subject1 {
public static void main(String[] args) {
System.out.print("请输入你想知道的兔子数量的月份:");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();//获取输入的整数
System.out.println(test(n));
System.out.println(fun(n));
scanner.close();
}
/**
* 菜鸟写法
* @param i
* @return
*/
public static int test(int i){
int tot = 0;
int a = 0;
int b = 1;
for(int j = 0;j<i; j++){ tot = a+b; a = b; b = tot; } return a;
}
/**
* 大神写法
* @param * @return */ private static int fun(int n){ if(n==1 ||n==2) return 1; else return fun(n-1)+fun(n-2);
}
}
运行结果:
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
/** * 【程序2】 * 题目:判断101-200之间有多少个素数,并输出所有素数。 * * 分析:什么是素数,不能被自己和1整除的数。 */ public class Subject2 { public static void main(String[] args) { getPrimeNumber(101,200); } /** * 判断a和b之间有多少个素数 * @param a * @param b */ public static void getPrimeNumber(int a,int b){ int sum = 0; if(a >= b){ System.out.println("a不能大于等于b!"); } System.out.print("素数:"); for(int i=a;i<=b;i++){ if(isPrimeNumber(i)){ sum += 1; System.out.print(i+" "); } } System.out.println(); System.out.println("存在素数数量:"+sum); } /** * 判断num是否是一个素数 * @param i * @return */ private static boolean isPrimeNumber(int i) { boolean flag = true; for(int j=2;j <= i/2;j++){ if(i%j == 0){ flag = false; break; } } return flag; } }
运行结果:
【程序3】
题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
/***
* 【程序3】
* 题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
*/
public class Subject3 {
public static void main(String[] args) {
for(int i= 100 ; i<=999;i++){ if(isNarcissus(i)){ System.out.println("水仙花数:"+i);
}
}
} public static boolean isNarcissus(int a){ int num1 = 0; //个位 int num2 = 0; //十位 int num3 = 0; //百位 num3 = a/100; num2 = (a - num3*100)/10; num1 = a - num3*100 - num2*10; if(Math.pow(num1,3) + Math.pow(num2,3) + Math.pow(num3,3) ==a){ return true;
} return false;
}
}
运行结果:
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
/**
* 【程序4】
* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
*/
public class Subject4 {
public static void main(String[] args) {
System.out.print("请输入需要分解因数的整数:");
Scanner scanner=new Scanner(System.in);
int a = scanner.nextInt();//获取输入的整数
decompose(a);
}
/**
* 分解质因数
* @param num
* @return
*/
public static void decompose(int num){
int tmp = num/2;
for(int i=2;i <= tmp ;i++){ if(num%i == 0){ num = num/i; System.out.println("质因数为:"+i); i=1; continue;
}
}
}
}
运行结果:
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
/** * 【程序5】 * 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 */ public class Subject5 { public static void main(String[] args) { System.out.println("请输入学生成绩:"); Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); String result = a>=90? "A" : (60<=a && a<90? "B" :"C"); System.out.println("该学生的最终评级为:"+result); } }
运行结果:
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
import java.util.Scanner;
/**
* 【程序6】
* 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
*/
public class Subject6 {
public static void main(String[] args) {
System.out.println("请输入第一个正整数:");
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
System.out.println("请输入第二个正整数:");
int b = scanner.nextInt();
int maxCommonDivisor = maxCommonDivisor(a,b);
System.out.println("最大公约数:"+ maxCommonDivisor);
int minCommonMultiple = (a*b)/maxCommonDivisor;
System.out.println("最小公倍数:"+ minCommonMultiple);
scanner.close();
}
/**
* 获取num1和num2的最大公约数
* @param num1
* @param num2
* @return
*/
public static int maxCommonDivisor(int num1,int num2){
int result = 1;
int tmp = num1>num2? num2 :num1;
for (int i = 2; i <= tmp; i++) { if(num1%i == 0 && num2%i == 0){ result = i*result; num1 = num1/i; num2 = num2/i; i=1; }
} return result;
}
}
运行结果:
【程序7】
题目:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。
import java.util.Scanner; /** * 【程序7】 * 题目:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。 */ public class Subject7 { public static void main(String[] args) { System.out.println("请输入字符串:" ); Scanner scanner=new Scanner(System.in); scanner.useDelimiter("\n"); String tmpStr = scanner.next(); classify(tmpStr); } public static void classify(String str){ char[] strArr = str.toCharArray(); int num1 = 0; //字母 String num1Str = ""; int num2 = 0; //数字 String num2Str = ""; int space = 0; //空格 String spaceStr = ""; int other = 0; //其他 String otherStr = ""; for (int i = 0; i < strArr.length ; i++) { int ascii = (int)strArr[i]; if( 48<= ascii && ascii <= 57){ num2 = num2 + 1; num2Str = num2Str +strArr[i] +" "; }else if(ascii == 32){ space = space +1; }else if((65<= ascii && ascii <= 90) || (97 <= ascii && ascii <= 122)){ num1 = num1 + 1; num1Str = num1Str +strArr[i] +" "; }else{ other = other + 1; otherStr = otherStr +strArr[i] +" "; } } System.out.println("存在字母个数:" + num1); System.out.println("存在字母如下:" + num1Str); System.out.println("存在数字个数:" + num2); System.out.println("存在数字如下:" + num2Str); System.out.println("存在空格个数:" + space); System.out.println("存在其他个数:" + other); System.out.println("存在其他如下:" + otherStr); } }
运行结果:
【程序8】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;
import java.math.BigDecimal;
import java.util.Scanner;
/**
* 【程序8】
* 题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;
*/
public class Subject8 {
public static void main(String[] args) {
System.out.println("请输入数字1(小于10):" );
Scanner scanner=new Scanner(System.in);
int a = scanner.nextInt();
System.out.println("请输入数字2(1-10):" );
int b = scanner.nextInt();
sum(a,b);
}
/**
* 求和
* @param num1
* @param num2
*/
public static void sum(int num1,int num2) {
String numStr = "";
String result = "";
BigDecimal bigDecimal = new BigDecimal("0");
for(int i=0;i< num1; i++ ){ numStr = numStr+num2; if(i==0){ result = result+numStr; }else{ result = result+"+"+numStr;
} bigDecimal = bigDecimal.add(new BigDecimal(numStr));
} result = result +"=" +bigDecimal.toString();
System.out.println("结果:"+result);
}
}
运行结果:
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。
import java.util.ArrayList; import java.util.List; /*** * 【程序9】 * 题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。 */ public class Subject9 { public static void main(String[] args) { for (int i = 0; i <1000 ; i++) { perfectNum(i); } } /** * 判断是否是完数 */ public static void perfectNum(int num){ List<Integer> list = decompose(num); int sum = 0; for(int i :list){ sum = sum + i; } if(num == sum && num != 1){ System.out.println("完数:"+num); } } /** * 分解质因数 * @param num * @return */ public static List decompose(int num){ List<Integer> list = new ArrayList(); list.add(1); int tmp = num/2; for(int i=2;i <= tmp ;i++){ if(num%i == 0){ list.add(i); continue; } } return list; } }
运行结果:
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。
import java.util.Scanner;
/**
* 【程序10】
* 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。
*/
public class Subject10 {
public static void main(String[] args) {
System.out.println("请选择第几次落地:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
sumLength(n);
}
public static void sumLength(int n){
double height = 100;
double sumLength = 0;
for(int i=1; i<=n; i++){ if(i==1){ sumLength = sumLength + height;
}else{ sumLength = sumLength + height*2;
} height = height/2; } System.out.println("总运动距离为:"+sumLength); System.out.println("反弹高度为:"+height);
}
}
运行结果:
一时没有看懂也不要灰心,毕竟我也是用了不少的时间才弄懂的。不懂的话可以多看几遍,或者可以加下小编的V:K15197783918,和小伙们一起交流。