Java学习第四天

来源:互联网 发布:列车网络控制系统组成 编辑:程序博客网 时间:2024/05/22 00:00

Java学习第四天

*******************************单目运算符   循环结构****************************

昨天的内容回顾:
逻辑运算符:&& || !
赋值运算符:先计算赋值运算符右边的表达式
            =   +=    -=   *=   /=    %=
程序结构:
1、顺序结构:自上而下逐行进行
2、选择结构:if    多重if选择结构   嵌套if选择结构   switch结构 
【说明:】
(1)表达式的类型:
   在JDK1.6以前 只能是int byte short char 类型
   在JDK1.6及以后 增加了String  
(2)break:不是必须的 
(3)default:默认的意思(相当于else,以上都不是,否则的意思)可以放在任意位置,但一般放在最后
(4)case的值是不能重复的
面试题:不使用第三方变量来交换两个变量的值(运用+-)

练习1:员工管理系统的功能:计算个人所得税税金
          超出部分
5000以下     0
5001~6000   1.2%
6001~8000   2.5%
8001~10000   4%
10000以上    6%

要求:从控制台输入本月工资,通过计算告知你本月应缴纳的税金为多少?

Ex1.java

package cn.qc.javaproject1706.day4;

import java.util.Scanner;

public class Ex1 {
 public static void main(String[] args) {
  Scanner ip = new Scanner(System.in);
  System.out.println("请输入你的工资:");
  float salary = ip.nextFloat();
  // 存放税金
  float tax = 0.0f;
  // 存放超出部分的薪资
  float comSalary = salary - 5000;
  //多重if
  if (salary <= 5000) {
   tax = 0;
  } else if (salary <= 6000) {
   tax = comSalary * 0.012f;
  } else if (salary <= 8000) {
   tax = comSalary * 0.025f;
  } else if (salary <= 10000) {
   tax = comSalary * 0.04f;
  } else if (salary > 10000) {
   tax = comSalary * 0.06f;
  }
  System.out.println("你本月应缴纳的税金为:" + tax);
  ip.close();
 }
}

今日内容:

1、单目运算符(重点):

2、循环结构:
   重点是应用   怎样应用语法来实现代码功能

1、单目运算符(重点):

什么是单目运算符?
目:参与计算的表达式或变量(多目运算符:1+2+3)
单目:一个表达式或变量
例如:   int i=0;
         i++;

运算符:++(对变量进行加一) --(对变量减一)

见代码Sign.java

package cn.qc.javaproject1706.day4;

public class Sign {
 public static void main(String[] args) {
  //单目运算符
  int i=2;
  System.out.println("i="+i);
  i++;
  System.out.println("i="+i);
  int num=1;
  int sum=num++ +2;
  //先使用num的值+2赋值给sum,然后改变num的值+1 sum=3 num=2改变后对sum无影响
  System.out.println("sum="+sum);
  int num1=1;
  int sum1=++num1 +2;//先改变num1的值+1,然后再加2  sum1=2+2=4
  System.out.println("sum1="+sum1);
  int num2=1;
  //先使用num2的值 输出 输出后 再改变num2的值
  System.out.println(num2++);//结果还是1
  System.out.println(num2);//结果为2
  
  int num3=1;
  int ret=++num3 + num3++ + ++num3;
  //     num3=2 2+2=4  num3=3  4+4=8      
  //ret=?
  System.out.println("ret="+ret);
 }
}


int i=1;
++i;//先改变i的值(就是对i+1),然后再使用i
i++;先使用i的值,然后再改变i的值

使用:从内存中读取到值然后进行计算、输出、赋值等

 ()  单目运算  算术运算  比较运算  逻辑运算  赋值运算

(优先级由高到低  括号优先级永远是最高的!)

2、循环结构:
重复的去做一件事

循环案例: 找案例的特点

第一个:打印五十份试卷   重复做的事:打印   结束:50份试卷打完
第二个:二百米一圈操场上跑5千米  重复:跑圈   结束:够5000米
第三个:完成10道编程题   重复:做题 (每次的题可以不同)   结束:做完10道题

循环的两要素:循环体(重复做的事是什么)
              循环条件(什么时候重复做/什么时候不重复、结束了)

循环的好处:
输入一百遍“好好学习,天天向上!”
for(int i=0; i<100;i++){
     System.out.println("好好学习,天天向上!");
}

1、while循环
while(循环条件){
         /循环体
}

见代码While.java

package cn.qc.javaproject1706.day4;

public class While {
 public static void main(String[] args) {
  //100遍好好学习,天天向上!while
  //循环条件:不足100 遍就要打印  使用变量来计数
  //循环体:输出打印
  //什么变量来记录打印的次数
  int i=1;
  while(i<=100){
   //循环体
   System.out.println("第"+i+"遍:好好学习,天天向上!");
   //打印次数+1
   //
   i++;
  }
 }

}


在循环条件中使用的变量叫循环变量

【注意】一定要在循环体中去改变循环变量,否则将造成死循环。

练习2:
要求计算1~100之间数字之和  while
int i=1;
int sum=0;

循环条件:判断是否加到100 i<=100
循环体:  sum+=i  i++;

Ex2.java

package cn.qc.javaproject1706.day4;

public class Ex2 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int i = 1;
  int sum = 0;
  while (i <= 100) {
   sum += i;//等于sum=sum+1
   i++;//等于i+1
  }
  System.out.println("sum=" + sum);
 }
}

练习3:

计算0~100之间偶数的和  while
Ex3.java

package cn.qc.javaproject1706.day4;

public class Ex3 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //方法一
  int i=0;
  int sum=0;
  while(i<=50){
   sum+=i*2;
   i++;
  }System.out.println("sum="+sum);
  //方法二
  int j=2;
  int sum1=0;
  while(j<=100){
   sum1+=j;
   j+=2;
  }System.out.println("sum1="+sum1);
 }
}

计算0~100之间
7的倍数     q%7==0
各位是7     q%7==7
十位是7     q/7==7

 

                int q = 0;
  while (q < 100) {
   if (q % 7 == 0 || q % 10 == 7 || q / 10 == 7) {
    System.out.println(q);
   }
   q++;
  }

应用:

登录:当账号或密码错误3次后停止登录
条件:错误次数是否够三次

循环体 输入账号密码
Login.java

package cn.qc.javaproject1706.day4;
import java.util.Scanner;
public class Login {
 public static void main(String[] args) {
  Scanner ip=new Scanner(System.in);
  System.out.println("***************************");
  System.out.println("*******HR管理系统***********");
  System.out.println("***************************");
  //声明循环变量来记录错误的次数
  int count=0;
  while(count<3){
   //输入账号密码然后进行判定
   System.out.println("请输入账号:");
   String userId=ip.next();
   System.out.println("请输入密码:");
   String userPwd=ip.next();
   if(userId.equals("admin") && userPwd.equals("123456")){
    System.out.println("登陆成功!");
    //当输入正确后,需要结束循环
    break;
   }else{
    //循环变量改变
    count++;
    if(count==3){
     System.out.println("错误次数已打到3次,程序退出!");
     //退出
     System.exit(0);
    }else{
     //错误
     System.out.println("账号或密码错误,请重新输入!");
    }    
   }
  }
  System.out.println("系统功能菜单如下:");
 }

}

 

break :跳出当前所在的循环(当前所在的循环结束),循环后的代码继续执行

格式化代码 在搜狗输入法外  全选代码 Ctrl+shift+F


猜数游戏:
随机产生一个数(一百以内),然后通过用户输入产生的数是多少
允许猜5次,每次如果猜错了,提示用户:猜大了还是小了,到5次还没猜对  程序结束

Demo.java

package cn.qc.javaproject1706.day4;

import java.util.Scanner;
import java.util.Random;

public class Demo {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner ip = new Scanner(System.in);
  // 怎样产生一个随机数
  // 产生一个0~指定范围的随机数
  Random rd = new Random();
  // 使用rd产生0~指定的数,范围内的随机数
  int num = rd.nextInt(100);
  System.out.println(num);
  int i = 1;
  while (i <= 5) {
   System.out.println("您还有" + (6 - i) + "次机会");
   System.out.println("请输入一数:");
   int num1 = ip.nextInt();  
   if (num < num1) {
    System.out.println("您猜的数大了!");
   } else if (num > num1) {
    System.out.println("您猜的数小了!");
   } else if (num == num1) {
    System.out.println("您猜对啦!");
    break;
   }i++;
  }
  System.out.println("程序退出!");
  System.exit(0);
 }

}

循环:条件  循环体

循环方式:(三种)
while循环    先判断条件   条件为true  执行循环体   如果为false  循环结束  
有可能一次都执行不到

do while循环   先执行循环体   再判断条件  如果条件为true 将再次执行循环体   如果为false 循环结束
至少被执行一次

do{
    //循环体
}while(条件);

不判断条件,让用户至少执行一次  使用do while循环
例如:给用户输出菜单
至少输出一次


1~100加和

Dowhile.java

package cn.qc.javaproject1706.day4;

public class Dowhile {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //do while 1~100之间数字之和
  int i=1;
  int sum=0;
  do{
   sum+=i;
   //改变循环变量
   i++;
  }while(i<=100);
  System.err.println("sum="+sum);
 }

}


(3)for 
for  (表达式1;表达式2;表达式3){
       //循环体
}
表达式1:循环变量的初始化(初始化:声明并且赋值的过程)
表达式2:判断循环条件是否满足循环条件
表达式3:完成循环变量的迭代(++  --)

见代码For.java

package cn.qc.javaproject1706.day4;

public class For {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  // 1~100之间数字之和
  int sum = 0;
  for (int i = 1; i <= 100; i++) {
   sum += i;
  }
  System.out.println("sum=" + sum);

 }

}


for循环的执行过程:

int sum=0;
for(int i=1;i<=100;i++){
    sum+=i;
}
执行顺序:
表达式1、表达式2、执行循环体sum+=i;、表达式3、表达式2。。。。。

for 先判断条件,只有条件为true 才执行循环体

已知循环次数的情况下  使用for

使用for循环,统计1~100之间7倍数的个数

Ex6.java

package cn.qc.javaproject1706.day4;

public class Ex6 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int count = 0;
  for (int i = 1; i <= 100; i++) {
   if (i % 7 == 0) {
    count += 1;
   }
  }
  System.out.println("count=" + count + "个");
 }
}


【说明:】
(1)表达式1可以省略(就是可以把它拿出去)
int i = 1
for ( ; i <= 100; i++)

}
(2)表达式3也可以省略(没有:死循环 或 把它拿出去放在循环体中)
(3)表达式2也可以省略(将没有条件直接执行循环体)
    for( ; ; )

   死循环  while(true){
           }

循环总结:
1、先判断条件,再执行循环体  while  for
2、先执行一次,在判断条件do while
3、已知循环次数的情况下优先考虑for
4、改变循环结构的关键词

break:退出所在的当前循环(当前循环结束)
        只能用在循环中和switch中

continue:结束本次循环(0本次还有未执行的代码,将不被执行),进入下一次循环
          只能用在循环中

见代码:Continue.java

package cn.qc.javaproject1706.day4;

public class Continue {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  for (int i = 1; i <= 20; i++) {
   // 先判断当前循环变量的值是否是4
   if (i == 4) {
    continue;
   }
   // 输出
   System.out.println("i=" + i);
  }

 }

}

循环的嵌套:
明天内容:二重循环 数组

练习:
输入一个四位数:分别输出

 

 

 

 


 

 

原创粉丝点击