本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

**转载请注明 出自 : luogg的博客园 ** 谢谢配合!

程序流程控制

  • 顺序结构
  • 分支结构:if-else,switch-case
  • 循环结构:while,do-while,for

if-else三种格式

1.
if(true){
执行代码块;
} 2.
if(){
}else{
} 3.
if(){
}else if(){
}
...
else{
}
if-else的练习
//输入小明的成绩,并输出相应成绩对应的奖励
//创建一个Scanner类的对象
Scanner sc=new Scanner(System.in);
System.out.println("请输入小明的期末成绩");
//调用此对象响应的方法,完成键盘输入的值得获取
int score=sc.nextInt();
if(score>100||score<0){
System.out.println("你输入的数值有误,请重新输入");
}else if(score==100){
System.out.println("奖励一俩BMW");
}else if(80<score&&score<=99){
System.out.println("奖励一部iphone6s");
}else if(60<score&&score<=80){
System.out.println("奖励一本参考书");
}else{
System.out.println("什么都不奖励");
}
sc.close();
switch的用法
 switch(变量){
case 值1:
case 值2:
case 值3:
default:
}
  1. 根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句,如果没有break语句,会继续执行其下的case语句。
  2. default:是可选的,而且位置是灵活的。
  3. 变量可以是哪些类型?char,byte,short,int,枚举.
  4. case条件:其中条件只能是值,不能是取值范围。switch-case不能对区间进行判断。

for循环
  • for循环结构
  • 1.初始化条件
  • 2.循环条件
  • 3.迭代条件
  • 4.循环体
public static void main(String[] args) {
int j=1;
for(System.out.println('a');j<3;System.out.println('b'),j++){
System.out.println('c');//acbcb
}
//输出100以内所有偶数 并计算其和 并说出其偶数的个数
int sum=0;
int count=0;
for(int i=1;i<=100;i++){
if(i%2==0){
System.out.println(i);
sum+=i;
count++;
}
}
System.out.println("总和为"+sum);//2550
System.out.println("100以内偶数的个数为"+count);//50
}
//编写程序,从1循环到150在每行打印一个值,并在3的倍数后边打印foo,
//5的倍数后边打印biz,7的倍数后边打印baz
for(int a=1;a<=150;a++){
System.out.print(a); if(a%3==0){
System.out.print("foo ");
}
if(a%5==0){
System.out.print("biz ");
}
if(a%7==0){
System.out.println("baz");
}
System.out.println();
}

水仙花数

//输出一个水仙花数,水仙花数就是一个3位数,
//其各个位上的数字立方和其本身
//例如:153=1*1*1+5*5*5+3*3*3
for(int i=100;i<=999;i++){//遍历所有的三位数 456
int j1=i/100;//百位
int j2=(i-j1*100)/10;//十位
int j3=i%10;//个位
if(i==j1*j1*j1+j2*j2*j2+j3*j3*j3){
System.out.print(i+" ");//153 370 371 407
}
}

while循环

  • 1.初始化条件
  • 2.循环条件
  • 3.迭代条件
  • 4.循环体
  初始化条件
while(循环条件){
循环体
迭代条件
}
  • for循环与while循环可以相互转换。
  • while与for的区别:while的初始化条件定义在外边,for定义在内部,初始化条件在执行完循环以后还可以用,而for不可以用。
// 100以内的偶数的输出,以及它们的和
int i = 1;
int sum = 0;
while (i <= 100) {
if (i % 2 == 0) {
System.out.println(i);
sum += i;
}
i++;
}
System.out.println(sum);

do-while(用的少)

  • 1.初始化条件
  • 2.循环条件
  • 3.迭代条件
  • 4.循环体
初始化条件
do{
循环体
迭代条件
}while(循环条件);
  • do-while与while的区别:do-while循环至少会执行一次

循环练习

//从键盘读入个数为10个的整数,并判断读入的正数和负数的个数
Scanner s = new Scanner(System.in);
int a = 0;//记录正数的个数
int b = 0;//记录负数的个数
int c = 0;//记录0的个数
for(int i = 1;i <= 10;i++){
System.out.println("请输入第"+i+"个整数");
int num = s.nextInt();
if(num > 0){
a++;
}else if(num < 0){
b++;
}else if(num == 0){
c++;
}
}
System.out.println("正数的个数为"+a);
System.out.println("负数的个数为"+b);
System.out.println("0的个数为"+c);
s.close();
//从键盘输入个数不确定的数,并判断读入的正数和负数的个数,输入0时结束程序
Scanner s = new Scanner(System.in);
int a = 0;//记录正数的个数
int b = 0;//记录负数的个数
for(;;){
System.out.println("请输入一个整数:");
int num = s.nextInt();
if(num > 0){
a++;
}else if(num < 0){
b++;
}else{
break;
}
}
System.out.println("正数的个数为:"+ a);
System.out.println("负数的个数为:"+ b);
s.close();
  • 无限循环for(;; ) while(true)
  • 一般情况下,在无限循环的内部要有程序终止的语句,break,若没有就是死循环了。

循环的嵌套使用

        /*
*****
*****
*****
*/
for (int j = 1; j <= 4; j++) {// 外层循环控制行数
for (int i = 1; i <= 5; i++) {// 内层循环控制列数
System.out.print("*");
}
System.out.println();
}
	/*
*
**
***
****
*/ for (int j = 1; j <= 4; j++) {
for(int i = 1;i<=j;i++){
System.out.print("*");
}
System.out.println();
}
		/*
****
***
**
*
*/
for (int j = 1; j <= 4; j++) {
for(int i = 4;i>=j;i--){
System.out.print("*");
}
System.out.println();
}
/*
----*
---* *
--* * *
-* * * *
* * * * *
-* * * *
--* * *
---* *
----*
*/
//上半部分
for(int i = 1;i <= 5;i++){
for(int j = 4;j >= i;j--){
System.out.print(" ");
}
for(int k = 1;k <= i;k++){
System.out.print("* ");
}
System.out.println();
}
//下半部分
for(int i = 1;i <= 4;i++){
for(int j = 1;j <= i;j++){
System.out.print(" ");
}
for(int k = 4;k >= i;k--){
System.out.print("* ");
}
System.out.println();
}
//打印九九乘法表
for(int i = 1;i <= 9;i++){
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + j*i + "\t");
}
System.out.println();
}

打印100以内所有的质数

//打数印100以内所有质数
//质数:除了1和他本身以外不能再被其他数整除
boolean flag = false;
for(int i = 2;i <= 100;i++){//实现100以内自然数遍历
for(int j = 2;j < i;j++){
if(i % j == 0){
flag = true;
}
}
if(flag == false){
System.out.println(i);
}
flag = false;
}
 测试完成求 1-10w 所有质数 所用的毫秒数
long start = System.currentTimeMillis();
boolean flag = false;
for(int i = 2;i <= 100000;i++){//实现100以内自然数遍历
for(int j = 2;j < i;j++){
if(i % j == 0){
flag = true;
}
}
if(flag == false){
System.out.println(i);
}
flag = false;
}
long end = System.currentTimeMillis();
System.out.println("完成操作所用的毫秒数为:"+ (end-start));//51305

费时太多,需要优化,首先在flag底下加break,然后将flag==false改为!flag,再将j<i变为j<Math.sqrt(i) 根号i;

long start = System.currentTimeMillis();
boolean flag = false;
for(int i = 2;i <= 100000;i++){//实现100以内自然数遍历
for(int j = 2;j <= Math.sqrt(i);j++){//判断根号i
if(i % j == 0){
flag = true;
break;
}
}
if(!flag){
System.out.println(i);
}
flag = false;
}
long end = System.currentTimeMillis();
System.out.println("完成操作所用的毫秒数为:"+ (end-start));//51305
//加上break之后,4796,使用Math.sqrt()之后,270毫秒

break与continue

/*
* break:结束"当前"循环。
* continue:跳出"本次"循环,继续下一次循环。
*/
for (int i = 1; i <= 10; i++) {
if(i % 4 == 0){
//break;//1,2,3
continue;//1,2,3,5,6,7,9,10
}
System.out.println(i);
}
  • break和continue语句之后不能再添加其他语句,因为不可能被执行。

luogg_java学习_03_流程控制及循环结构的更多相关文章

  1. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

  2. 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

    048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...

  3. 046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项

    046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项 本文知识点:for循环的注意事项 for循环的注意事项 for循环有3个 ...

  4. 045 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 07 for循环应用及局部变量作用范围

    045 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 07 for循环应用及局部变量作用范围 本文知识点:for循环应用及局部变量作用范围 for循环 w ...

  5. 040 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 02 while循环的执行流程

    040 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 02 while循环的执行流程 本文知识点:while循环的执行流程 三种循环结构中的第一种--wh ...

  6. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  7. 053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结

    053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结 本文知识点: 流程控制知识总结 流程控制知识总结 选择结构语句 循环结构语句 ...

  8. 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序

    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...

  9. 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句

    050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...

随机推荐

  1. 知方可补不足~Sqlserver中的几把锁和.net中的事务级别

    回到目录 当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOC ...

  2. ajax图片上传及FastDFS入门案例.

    今天来开始写图片上传的功能, 现在的图片上传都讲求 上传完成后立刻回显且页面不刷新, 这里到底是怎么做的呢? 当然是借助于ajax了, 但是ajax又不能提交表单, 这里我们还要借助一个插件: jqu ...

  3. atitit 短信验证码的源码实现  .docx

    atitit 短信验证码的源码实现  .docx 参考 Atitit usrQBM1603短信验证码规范1 主要方法1 源码实现1 参考 Atitit usrQBM1603短信验证码规范 主要方法 L ...

  4. rabbitmq消息队列——"工作队列"

    二."工作队列" 在第一节中我们发送接收消息直接从队列中进行.这节中我们会创建一个工作队列来分发处理多个工作者中的耗时性任务. 工作队列主要是为了避免进行一些必须同步等待的资源密集 ...

  5. react2 react 遍历数组

    <body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...

  6. 微软BI 之SSIS 系列 - 使用 SQL Profilling Task (数据探测) 检测数据源数据

    开篇介绍 SQL Profilling Task 可能我们很多人都没有在 SSIS 中真正使用过,所以对于这个控件的用法可能也不太了解.那我们换一个讲法,假设我们有这样的一个需求 - 需要对数据库表中 ...

  7. SQL Server Window Function 窗体函数读书笔记二 - A Detailed Look at Window Functions

    这一章主要是介绍 窗体中的 Aggregate 函数, Rank 函数, Distribution 函数以及 Offset 函数. Window Aggregate 函数 Window Aggrega ...

  8. 转载:css3 content 生成内容

    本文地址:http://www.w3cplus.com/solution/css3content/css3content.html 这篇文章挺不错的,建议看一下. content一般和:before, ...

  9. Winform实现Shp-栅格图形文件的读取与显示(外加shp转WKB格式存入oracle)附源码

    前言:上学期GIS空间数据库课程设计时,老师让实现Shp-栅格图形文件的读取与显示,外加shp转WKB格式存入oracle,不使用第三方类库,花了一天时间在网上找了一些资料,实现了一个简单的栅格图形文 ...

  10. 【WP8.1开发】基于应用的联系人存储

    上一篇文章所吹的牛是访问系统(手机)上的联系人,当然那只是读不能改,这是自然的,要是让你能随便修改用户的联系人信息的话,那后果很严重,有些恶意开发者就有可能把”你的户口改成猪“. 但是,API也允许应 ...