对java基础语句的处理
本次的本次一共要实现若干个独立的功能,我写在了一个程序中。
下面是具体的代码:
import java.util.Scanner;
class ZuoYe{
public static void main(String args[])
{
//1. 使用while循环,求1+11+111+1111+11111+111111。
System.out.println("使用while循环,求 1+11+111+1111+11111+111111的值为:");
int sum=0,int1=1;
while(int1<=111111){
sum+=int1;
int1=int1*10+1;
}
System.out.println(sum);
System.out.println();
//2. 求10的阶乘 1x2x3x4…x10.
int i;
sum=1;
for(i=1;i<=10;i++)
sum*=i;
System.out.println("10的阶乘 1x2x3x4…x10的值为:"+sum);
System.out.println();
//3. 求1+2+3……+1000的和,把和输出,计算每步结果中有多少个最后以8结尾的。
int j=0;//计数器
sum=0;
for(i=1;i<1000;i++){
sum+=i;
if(sum%10==8)j++;
}
System.out.println("1+2+3……+1000的和为:"+sum);
System.out.println("其中结尾为8的次数为"+j);
System.out.println();
//4. 计算1+2+3……,直到和大于500,程序退出,输出结果。
i=1;
sum=0;
while(sum<=500){
sum+=i;
i++;
}
System.out.println("1+2+3……,直到和大于500值为:"+sum);
System.out.println();
/*
5. 输出下列图案
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
… … … … … … …
1 … … … … … … … … 10
*/
System.out.println("输出下列图案:");
for(i=1;i<=10;i++)
{ for(j=1;j<=i;j++)
System.out.print(j+"\t");
System.out.println();}
System.out.println();
// 6. 某人工资为6000/月,工资月增长率为0.5%,工作20年,共得到多少工资。
double salary=6000.0d;//用来储存每个月的工资
double sum1=0d;
System.out.println("某人工资为6000/月,工资月增长率为0.5%,工作20年,共得到d的工资为:");
for(i=1;i<=20*12;i++)
{
sum1+=salary;
salary*=(1+0.005);
}
System.out.println(sum1);
System.out.println();
//7. 100到200之间,所有能被5或6整除,但不能同时整除的数,每行显示10个。
System.out.println("100到200之间,所有能被5或6整除,但不能同时整除的数为:");
j=0;//充当计数器
for(i=100;i<=200;i++)
{ if(j%10==0)
System.out.println();
if(!(i%5==0&&i%6==0))
if(i%5==0||i%6==0)
{System.out.print(i+"\t");
j++;
}
}
System.out.print("");
//8.打印乘法口诀表。
System.out.println("下面是乘法口诀:");
for(i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{
System.out.print(j+"x"+i+"="+i*j+"\t");
}
System.out.println();
}
//9. 求1—100奇数的和。
sum=0;
System.out.print("求1—100奇数的和:");
for(i=1;i<=100;i+=2)
{
sum+=i;
}
System.out.println(sum);
System.out.println();
//10. 求1+2+3……+1000的和,把和输出,并且计算什么时候和大于500。
sum=0;
for(i=1;i<1000;i++){
sum+=i;
if(sum<500)j=i;
}
System.out.println("1+2+3……+1000的和为:"+sum);
System.out.println("当i的值为"+(j+1)+"时,和已经大于500");
System.out.println();
//11. 求1----100里,能被3整除或者能被4整除的数的和。
sum=0;
for(i=1;i<=100;i++)
if(i%3==0||i%4==0)
sum+=i;
System.out.println("1----100里,能被3整除或者能被4整除的数的和为"+sum);
System.out.println();
//12. 求1----100里,能被6整除且能被9整除的数的和。
sum=0;
for(i=1;i<=100;i++)
if(i%6==0&&i%9==0)
sum+=i;
System.out.println("1----100里,能被6整除且能被9整除的数的和为"+sum);
System.out.println();
//13. 计算半径为3的圆的面积,然后把面积的值输出。(注意所使用的数据类型)。
double r=3.0d;
System.out.println("径为3的圆的面积为:"+3.14*r*r);
System.out.println();
//14. 求1/2+1/3+1/4+1/5……1/10 的和。
sum1=0;//储存double型数据
for(i=2;i<10;i++)
{
sum1 +=(double)1/i;
}
System.out.println("1/2+1/3+1/4+1/5……1/10 的和为:"+sum1);
System.out.println();
/*
15. double b = Math.random();
b为一个0—1的随机数,要求生成一个0—10的随机整数。
*/
double b = Math.random();
System.out.println("生成一个0-10的随机数:"+b*10);
System.out.println();
/*
16. 一筐鸡蛋:
1个1个拿正好拿完。
2个2个拿还剩1个。
3个3个拿正好拿完。
4个4个拿还剩1个。
5个5个拿还剩4个。
6个6个拿还剩3个。
7个7个拿还剩5个。
8个8个拿还乘1个。
9个9个拿正好拿完。
问筐里有多少鸡蛋?
用程序写出计算过程!
*/
for(i=9;;i+=9)
if(i%4==1&&i%5==4&&i%6==3&&i%7==5&&i%8==1)break;
System.out.println("框中的鸡蛋个数为:"+i);
}
}
其中我印象最深的是最后两题。
(1)其中的第15题仔细分析后我觉得我写的肯定不对,我的算法只试用于随机的浮点型数据。仔细思考后,我觉得最合理的算法应该是原数乘以1.1然后强制转换,利用去尾法来取整数。
(2)而最后一题在听完老师的讲解后,我觉得受益匪浅。如果按照题中给定的条件全部转化为判断表达式,需要运行很多次。但是经过分析,可以简化操作,减少循环次数。4个4个拿还剩1个,5个5个拿还剩4个说明末尾数是9。9个9个拿正好拿完说明是九的倍数。则每次的增量至少可以是90,则循环次数变为4。大大减少了循环次数!