java习题8,Java学习8:编程练习

首先了解一个问题,应该怎么去编程?

1、解决一个问题的时候,可以先使用汉语描述思路。(养成好习惯)

2、复杂的问题可以“一步一步”去实现,没必要以下全部实现。

编程思想/思路都是一步一步分析,积累出来的。

编程最主要的就是写汉语思路。思路有了,代码就不远了。

把问题拆开,一个一个去解决一下。

b1381527f4d6

练习题.png

第一题:

第一步:从1开始循环,循环到1000,先保证每一个数字都能取到。

第二步:在第一步的循环过程中,一个数字一个数字筛查,判断该数字是否是“不能被7整除的整数”。

public class Homework1{

public static void main(String[] args){

int sum = 0;

for (int i = 1 ;i <=1000 ;i++ ){//从1循环到1000

if(i%7!=0){//判断,如果i对7取余不等于0,求和

sum = sum +i;//不能被7整除就累加/求和

}

}

System.out.println("sum = " + sum);

}

}

第二题:

有规律,除了1以外,奇数是减法,偶数是加法

第一种思路: 可以把所有的偶数求和,再把所有的奇数求和,然后偶数求和的结果减去奇数求和的结果再加上1

第二种思路:循环过程中,取出每个值,判断该数是偶数还是奇数,偶数是加,奇数就减。

这里我给出第二种思路的写法。

public class Homework2{

public static void main(String[] args){

int sum = 1;

for (int i = 2 ; i <= 100 ; i ++){

if(i % 2 == 0){//偶数

sum +=i;

}else{//奇数

sum -=i;

}

}

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

}

}

第三题:

第一步:怎么在键盘上接收一个正整数

第二步:先不管乘法的事儿,先从输入的正整数取到1(逐次递减)

public class Homework3{

public static void main(String[] args){

java.util.Scanner s = new java.util.Scanner(System.in);

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

long jieCheng = 1;

for ( int i = s.nextInt() ; i > 0 ; i-- ){

jieCheng = jieCheng * i;

}

System.out.println("它的阶乘为:" + jieCheng);

}

}

第四题:

重点题目: 主要练习,在外部打布尔标记

什么是因数?例如3*5=15 3和5都是15的因数

质数就是除了1和他本身就没有因数的数。

public class Homework4{

public static void main(String[] args){

java.util.Scanner s = new java.util.Scanner(System.in);

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

int num = s.nextInt();

//可以考虑用一个布尔标记

boolean zhiShu = true;//true表示是质数

//判断该数字是不是质数

for (int i = 2 ; i< num ;i++ ){

if(num %i ==0){//余数是0表示不是质数,循环没必要执行了,为了效率,这里要终止循环

zhiShu = false;

break;

}

}

System.out.println(num + (zhiShu ? "是" : "不是") + "质数");

}

}

第五题:

空格的规律:第1行4个空格、第2行3个空格、第3行2个空格,第4行1个空格、第5行0个空格

星号的规律:第1行1个、第2行3个、第3行5个、第4行7个、第5行9个、行号 * 2 - 1

public class Homework5{

public static void main(String[] args){

java.util.Scanner s = new java.util.Scanner(System.in);

System.out.print("请输入一个正整数作为行数:");

int rows = s.nextInt();

for (int i = 1;i <= rows ;i++){//外循环控制总行数

//在这里需要一行全部输出

//输出空格以及“*”

//输出空格循环

for (int j = 0;j

System.out.print(" ");

}

//输出星号循环

for (int k = 0;k

System.out.print("*");

}

//换行

System.out.println();

}

}

}

第六题:

主要练习:while循环和

每一天都会得到2.5元

即使是花了6元,当天依然有2.5元的收入

public class Homework6{

public static void main(String[] args){

int day = 0;//天数的默认初始值为0

double money = 0.0;

while(true){

day++;//天数加1

money += 2.5;//钱数加2.5元

if(day % 5 == 0 ){

money -= 6.0;

}

//当money >= 100.0 的时候,循环结束

if (money >= 100.0){

break;

}

}

System.out.println("小芳通过" + day + "天积攒了" + money + "元钱");

}

}

第七题:

一个数如果恰好等于它的因子之和,这个数就是完数。

因子怎么找?

例如:10的因子怎么找

10 % 1 == 0

10 % 2 == 0

10 % 5 == 0

不算10本身

10的因子:1,2,5

1 + 2 + 5 = 8

10不是完数

public class Homework7{

public static void main(String[] args){

//第一步:先从1到1000,每个数字都取出来

//1不属于完数,从2开始判断

for (int i = 2;i <= 1000 ;i++ ){

//第二步:在这里可以拿到i,那么此时应该判断i是否是一个完数

//数字有了,接下来找这个数字的因子

int sum = 0;

for (int j = 1; j <= i / 2 ; j++ ){

//假设这个数是6,j取到的值就是:1 2 3 4 5

//但是实际上j只取了:1 2 3

//取到一半就行

if(i % j == 0){

//此时j就是因子。

//记得将因子j追加,累计。

sum += j;

}

}

//以上for循环结束,表示:所有银子求和完毕了

if (i == sum){

//i是一个完数

System.out.println(i);

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值