java题目_《Java练习题》Java习题集一

【程序1】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

importjava.util.Scanner;/*** 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

* 分析 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21只*/

public classSubject1 {public static voidmain(String[] args) {

System.out.print("请输入你想知道的兔子数量的月份:");

Scanner scanner=newScanner(System.in);int n=scanner.nextInt();//获取输入的整数

System.out.println(test(n));

System.out.println(fun(n));

scanner.close();

}/*** 菜鸟写法

*@parami

*@return

*/

public static int test(inti){int tot = 0;int a = 0;int b = 1;for(int j = 0;j

tot= a+b;

a=b;

b=tot;

}returna;

}/*** 大神写法

*@param*@return

*/

private static int fun(intn){if(n==1 ||n==2)return 1;else

return fun(n-1)+fun(n-2);

}

}

运行结果:

84d27099bf91614d2917f48bbce4500d.png

7121958a9e18aa6a6738d48f66f6083b.png

【程序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;

}

}

运行结果:

0887cc150fe9dc99eff9026b1e5bd364.png

【程序3】

题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

/***

* 【程序3】

* 题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。*/

public classSubject3 {public static voidmain(String[] args) {for(int i= 100 ; i<=999;i++){if(isNarcissus(i)){

System.out.println("水仙花数:"+i);

}

}

}public static boolean isNarcissus(inta){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;

}

}

运行结果:

feca1714f85f1105a634c2f8126410d7.png

【程序4】

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

/*** 【程序4】

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

public classSubject4 {public static voidmain(String[] args) {

System.out.print("请输入需要分解因数的整数:");

Scanner scanner=newScanner(System.in);int a = scanner.nextInt();//获取输入的整数

decompose(a);

}/*** 分解质因数

*@paramnum

*@return

*/

public static void decompose(intnum){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;

}

}

}

}

运行结果:

14fd177ac606694dc9b0f4d970929fe2.png

fb58f2a457442576c6049ef4938a6896.png

【程序5】

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

/*** 【程序5】

* 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。*/

public classSubject5 {public static voidmain(String[] args) {

System.out.println("请输入学生成绩:");

Scanner scanner= newScanner(System.in);int a =scanner.nextInt();

String result= a>=90? "A" : (60<=a && a<90? "B" :"C");

System.out.println("该学生的最终评级为:"+result);

}

}

运行结果:

35654abf01b7dc70b4959607691d4f4d.png

【程序6】

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

importjava.util.Scanner;/*** 【程序6】

* 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。*/

public classSubject6 {public static voidmain(String[] args) {

System.out.println("请输入第一个正整数:");

Scanner scanner= newScanner(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的最大公约数

*@paramnum1

*@paramnum2

*@return

*/

public static int maxCommonDivisor(int num1,intnum2){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;

}

}returnresult;

}

}

运行结果:

a93615dd7c619da7c5c0c74dab8656d2.png

3c64b49ea1efb24ce3d989dbbdc9f5bd.png

【程序7】

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

importjava.util.Scanner;/*** 【程序7】

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

public classSubject7 {public static voidmain(String[] args) {

System.out.println("请输入字符串:");

Scanner scanner=newScanner(System.in);

scanner.useDelimiter("\n");

String tmpStr=scanner.next();

classify(tmpStr);

}public static voidclassify(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);

}

}

运行结果:

acf00ab631254a5cced7747da16022a2.png

bbb27ed067e494ffa8f4cb411dbc5d9a.png

【程序8】

题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;

importjava.math.BigDecimal;importjava.util.Scanner;/*** 【程序8】

* 题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;*/

public classSubject8 {public static voidmain(String[] args) {

System.out.println("请输入数字1(小于10):");

Scanner scanner=newScanner(System.in);int a =scanner.nextInt();

System.out.println("请输入数字2(1-10):");int b =scanner.nextInt();

sum(a,b);

}/*** 求和

*@paramnum1

*@paramnum2*/

public static void sum(int num1,intnum2) {

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(newBigDecimal(numStr));

}

result= result +"=" +bigDecimal.toString();

System.out.println("结果:"+result);

}

}

运行结果:

969272b928d79adee157854f26a5dea7.png

35f7ca7aa604edf8d9140f5dba65de76.png

【程序9】

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

importjava.util.ArrayList;importjava.util.List;/***

* 【程序9】

* 题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。*/

public classSubject9 {public static voidmain(String[] args) {for (int i = 0; i <1000 ; i++) {

perfectNum(i);

}

}/*** 判断是否是完数*/

public static void perfectNum(intnum){

List list =decompose(num);int sum = 0;for(inti :list){

sum= sum +i;

}if(num ==sum && num != 1){

System.out.println("完数:"+num);

}

}/*** 分解质因数

*@paramnum

*@return

*/

public static List decompose(intnum){

List list = newArrayList();

list.add(1);int tmp = num/2;for(int i=2;i <= tmp ;i++){if(num%i == 0){

list.add(i);continue;

}

}returnlist;

}

}

运行结果:

f19ea036e26794e0e94aafed0f3444bd.png

【程序10】

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。

importjava.util.Scanner;/*** 【程序10】

* 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。*/

public classSubject10 {public static voidmain(String[] args) {

System.out.println("请选择第几次落地:");

Scanner scanner= newScanner(System.in);int n =scanner.nextInt();

sumLength(n);

}public static void sumLength(intn){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);

}

}

运行结果:

85f627707abdb371c9f229f9a32b119e.png

663f1b1a3406b00cfe2da0a8940ec250.png

参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值