Java学习笔记day2——循环结构综合例题(1个)

复制代码

//循环语句综合例题

/*
例题1:
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为零时,结束程序。
*/
//do-while
Scanner scan=new Scanner(System.in); //实例化
int postiveCount=0;
int negativeCount=0;
int num;
do {
System.out.println("请输入整数:");
num=scan.nextInt();
if(num>0)
postiveCount++;
else if(num<0)
negativeCount++;
}while(num!=0);
System.out.println("正数有"+postiveCount+"个,负数有"+negativeCount+"个");
//while
int positiveNumber=0;
int negativeNumber=0;
while(true) {
System.out.println("请输入整数:");
int number=scan.nextInt();
if(number>0)
positiveNumber++;
else if(number<0)
negativeNumber++;
else
break;
}System.out.println("正数有"+positiveNumber+"个,负数有"+negativeNumber+"个");
//小结:对于循环次数不确定的题,显然for循环是无法解决问题的,应该考虑do-while或while循环结构
//**********不在循环条件内部限制次数的结构:for(;;)或while(true)两种方法*****************
/*
按格式输出:
*
**
***
****
*****
*/
for(int i=0;i<5;i++) {
for(int j=0;j<=i;j++) {
System.out.print('*');
}
System.out.println();//换行
}
for(int i=0;i<4;i++) {
for(int j=0;j<=3-i;j++) {
System.out.print('*');
}
System.out.println();//换行
}

//九九乘法表打印:
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) {
System.out.print(i+"*"+j+"="+(i*j)+"\t");//加制表符以对其各列
}System.out.println();//换行
}

//一百以内所有的质数==================================================================================================
//方法一
long start=System.currentTimeMillis();//1970-01-01 00:00:00到现在的毫秒数
boolean isPrime;
for(int i=2;i<=100;i++) {
isPrime=true; //注意,引入的布尔型变量要在外层循环处重置,因为内层循环改变了isPrime,需要重新初始化
for(int j=2;j<=Math.sqrt(i);j++) { //改变j的取值为根号i,对所有的数都可以减少运算时间
if(i%j==0) {
isPrime=false;//只要被任意一个数除尽,则这个数将不是质数,可以不用再往下除了,应该开始判断下一个i是否是质数
break; //只对非素数减少运算时间是有效的
}
}if(isPrime) {
System.out.println(i);
}
}long end=System.currentTimeMillis();
System.out.println("程序一共花费了:"+(end-start)+"ms");
//********************************************方法优化见注释***********************************************************
//上半部分
for(int i=1;i<=5;i++) {
boolean isPrint=false;
for(int j=1;j<=i;j++) {
if(!isPrint) {
for(int k=5;k>=i;k--) {
System.out.print(" ");
isPrint=true;
}
}System.out.print("* ");
}System.out.println();
}
//下半部分
for(int i=4;i>=1;i--) {
boolean isPrint=false;
for(int j=1;j<=i;j++) {
if(!isPrint) {
for(int k=1;k<=6-i;k++) {
System.out.print(" ");
isPrint=true;
}
}System.out.print("* ");
}System.out.println();
}


public class Uitility {
//每日一考1====================================
/*
指出下列程序的输出结果
*/
public static void main(String[] args) {
label:for(int i=1;i<=4;i++) {
for(int j=1;j<=10;j++) {
if(j%4==0) {
continue label;
}System.out.print(j);
}System.out.println();
}
//输出:123123123123

//每日一考2=========================================================
/*
一个数如果恰好等于他的因子之和,这个数就被称为“完数”,例如6=1+2+3.
编程找出1000以内的所有完数。(因子:除去这个数本身的其他约数)
*/
System.out.println();
for(int i=1;i<=1000;i++) {
int count=0;
for(int j=1;j<i;j++) {
if(i%j==0) {
count+=j;
}
}if(count==i) {
System.out.println(i);
}
}
//优化
System.out.println();
for(int i=1;i<=1000;i++) {
int count=0;
for(int j=1;j<=i/2;j++) {//优化后计算步骤减小一半
if(i%j==0) {
count+=j;
}
}if(count==i) {
System.out.println(i);
}
}


}

 
复制代码

 

posted @   乐美  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示