Java03

 
字符输入
 
Scanner scan = new Scanner(System.in);
char ch = scan.next().charAt(0);
 
车到路口例
 
package Chapter3_2;
 
import java.util.Scanner;
 
public class Chapter3_2 {
 
     public static void main(String[] args) {
          // TODO Auto-generated method stub
          Scanner scan = new Scanner(System.in);
          System.out.println("已到路口请输入");
          char ch = scan.next().charAt(0);
          if (ch == '红') {
              System.out.println("stop");
          } else if (ch == '黄') {
              System.out.println("wait");
          } else if (ch == '绿') {
              System.out.println("go");
          } else {
              System.out.println("call police");
          }
 
     }
 
}
1.2进制、8进制、16进制和10进制的转化
    1.进制位的介绍 
        二进制:0、1 
        八进制:0、1、2、3、4、5、6、7
        十进制:0、1、2、3、4、5、6、7、9 
        十六进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
        01   1
    2.2进制和10进制的相互转化
        二进制转化成十进制要从右到左用二进制的每个数去乘以2的相应次方,不过次方要从0开始,例如:
        1101(2)=1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 = 1+0+4+8 = 13(10)
 
 
        十进制转化成二进制:
        整数部分:“除2取余,逆序排列”
        小数部分:“乘2取整,顺序排列”
 
        例如:982(10)转化为二进制的过程:
        982/2 = 491余   0    (第10位)
        491/2 = 245余   1    (第9位)
        245/2 = 122余   1    (第8位)
        122/2 = 61 余   0    (第7位)
        61/2  = 30 余   1    (第6位)
        30/2  = 15余    0    (第5位)
        15/2  = 7  余   1    (第4位)
        7/2   = 3 余    1    (第3位)
        3/2   = 1余     1    (第2位)
        1/2   = 0 余    1       (第1位)
        所以:982(10) = 1111010110(2)
 
        例如:0.625(10)转化为二进制的过程:
        0.625*2=1.25——————取出整数部分1
          0.25*2=0.5————————取出整数部分0
          0.5*2=1 ——————————取出整数部分1
        所以0.625(10) = 0.101
 
    3.练习:将19和0.125(10)转化成2进制格式
        19/2  9 1
        9/2   4 1
        4/2   2 0
        2/2   1 0
        1/2   0 1
 
        10011 
 
        0.125  *  2 0.25   0
        0.25 * 2     0.5   0
        0.5   * 2    1     1
 
 
 
         将10101010转化为10进制格式
 
        0
 
    4.八进制、十六进制转十进制
        定义:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。
        例如:将八进制127657(8)转成十进制:
            7*8^0+5*8^1+6*8^2+7*8^3+2*8^4+1*8^5 = 44975
 
        练习:将十六进制 9DF(16)转化为十进制 
 
 
    5.十进制转八进制、十六进制
        定义:整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数部分拼接成一个数作为转换的最后结果。
        例如:299(10)转十六进制
        299/16 = 18  余  11(B)
        18/16  = 1     余  2
        1/16   = 0     余  1
 
        所以299(10) = 12b(16)
 
        练习:2012转成8进制
 
 
 
2.运算符
    1.算数运算符 + - * / %(取模)
        5 % 2 = 1
        3 % 5=3
        5/2=2
        5.0/2=2.5
 
 
        注意:算数运算符运算的结果精度以运算符两边高精度的精度为准
        比如,Double d = 3.0 , int i = 3;   i和d做算术运算的结果为Double类型
        低——>高
        byte short int long float double
 
    2.自增自减运算符  ++ --
    3.赋值运算符 = 、 +=、 -= 、 *= 、 /=
    4.关系运算符  > 、 < 、 == 、 !=  、  <= 、 >=  (结果是布尔类型)
 
    5.位运算符  & | ~  ^  (按位与、或、非、异或)
      "位" = 2进制位,所以位运算即
      二进制运算
         异或加密的概念
 
    6.逻辑运算符  &(逻辑与) |(逻辑或)  &&(短路与)  ||(短路或)  !(逻辑非)
        重点:ShortCircuit.java  (短路或与逻辑或的区别)
        练习:短路与和逻辑与的区别
 
    7.移位运算符 << (左移)  >>(右移)
 
        2的3次方,用最高效的方法得到结果   
        0010(2) << 2 1000(8)
 
    8.三目运算符
        讲解
        练习:键盘输入一个数字,如果数字小于60,输出"不及格",否则,输出"通过了考试"
 
 
2.表达式
    1.运算表达式   3+6 、 x-y 、 i*j
    2.赋值表达式   int i = 3;
    3.关系(布尔)表达式   4>3 、i!=20 、
    4.逻辑表达式((i+1)==2&&i<3)   
 
 
3.总结:
    1.二进制、八进制、十六进制、十进制转换
    2.算数运算符、自增减运算符、    赋值运算符、关系运算符、位运算符、逻辑运算符、移位运算符、三目运算符
 
 
 
/*
    顺序:
    选择: if    switch
    循环:while   do-while   for
*/
 
 
3.if语句 、    if...else...语句、     if ... else if ... else 语句
       1.考试成绩要出来了,根据获得的考试成绩,判断学生是否及格,60分以下需要提示:“同学,你的成绩不及格”
       2.同上,60分以上提示:“同学,你及格了”;60分以下需要提示:“同学,你的成绩不及格”
      3.同上,要求输出优秀、优良、中等、不及格(90以上、80-90、60-80、60以下)
      *练习:开车到了十字路口,输入 红、绿、黄,其他(任意字符),输出结果为:
      “stop”、“go”、“wait”、“call police”
      //String str = scan.next();
    //char c = str.charAt(0);
    String str=scan.next();“黄”
    char ch=str.charAt(0);
 
 
4.switch开关(分支)语句
    1.语法介绍
    2.switch括号里的数据类型:byte、short、int、char  (String在JDK7中也支持)
    3.练习,根据输入的月份,输出该月的天数(假设2月28天)
    4.开车到了十字路口,输入 红、绿、黄,其他(任意字符),输出结果为:
    “stop”、“go”、“wait”、“call police”
    不过,当输入红的时候,可以根据路况实际情况(有没有交警?需输入)
    选择执行“stop”(有交警的情况),或者“go”(没有交警的情况) ,
    两个switch嵌套或者switch和if嵌套
    5.break作用
 
 
5.while循环、do——while循环
    1.while循环输出1至100的和
    *练习:1.while循环输出1至100之间所有的奇数之和、偶数之和
          2.while循环输出1至100之间同时能被5和6整除的数
    2.do——while循环输出1至100的和
    *练习:改写上面两个练习
    3.括号里的布尔表达式
 
 
6.for循环
 
 
    1.1至100的和
    *练习: 1.实现while循环的练习
          2.键盘输入一个数字,求它的阶乘
          3.求1至10的阶乘
    2.讲解如下实现
            1
            1    2
            1    2    3
            1    2    3    4
            1    2    3    4    5
            1    2    3    4    5    6
    *练习:小九九
         1*1 = 1
         1*2 = 2  2*2 = 4
         1*3 = 3  2*3 = 6  3*3 = 9
         ...........
 
 
 
7.continue和break在循环中起到的作用
    1.讲解continue实现奇数和 (遇到continue的时候,结束本次循环,直接进入下次循环)
       2.讲解break,从1开始累加,求加到多少的时候累计的和会超过10000  (遇到break,直接跳出理它最近的循环)
       *练习:
           1.求1-100之间所有能被5和6整除的数,用continue来做
           2.求100到200之间所有的素数(除了1和他本身外, 不能被任何数整除的数)
       3.打印半菱形
           *
           ***
           *****
           *******
           *****
           ***
           *
package Chapter5_3;
 
public class Chapter5_3 {
          public static void main(String[] args) {
                   for(int i = 1;i <=4;i++){
                             for(int j = 1;j<=2*i-1;j++){
 
                                      System.out.print("*");
                             }
                             System.out.println();
                   }
 
 
                   for(int i = 3;i >=1;i--){
                             for(int j = 1;j<=2*i-1;j++){
 
                                      System.out.print("*");
                             }
                             System.out.println();
                   }
 
 
          }
 
}
 
    *练习
              *                  *
             ***               * *
            *****            *   *
           *******         *     *
            *****            *   *
             ***               * *
              *                  *
 
 
package Chapter5_4;
 
public class Chapter5_4 {
 
          /**
           * 空心菱形输出
           */
          public static void main(String[] args) {
                   for (int i = 1; i <= 4; i++) {
                             for (int k = 1; k <= 4 - i; k++) {
                                      System.out.print(" ");
                             }
                             for (int j = 1; j <= 2 * i - 1; j++) {
 
                                      if (j == 1 || j == 2 * i - 1) {
                                                System.out.print("*");
                                      } else {
                                                System.out.print(" ");
                                      }
                             }
                             System.out.println();
                   }
 
                   for (int i = 3; i >= 1; i--) {
                             for (int k = 1; k <= 4 - i; k++) {
                                      System.out.print(" ");
                             }
                             for (int j = 1; j <= 2 * i - 1; j++) {
                                      if (j == 1 || j == 2 * i - 1) {
                                                System.out.print("*");
                                      } else {
                                                System.out.print(" ");
                                      }
                             }
                             System.out.println();
                   }
 
          }
 
}
 
    1.一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程   找出1000以内的所有完数。
 
package HomeWork3_1;
 
public class HomeWork3_1 {
 
          /**
           * 一个数如果恰好等于它的因子之和 这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
           */
          public static void main(String[] args) {
                   int sum = 0;
                   for (int i = 1; i <= 1000; i++) {
                             for (int j = 1; j < i; j++) {
                                      if (i % j == 0) {
                                                sum += j;
                                      }
                             }
                             if (sum == i) {
                                      System.out.println(sum);
                             }
                             sum = 0;
                   }
          }
}
 
 
    2.求1/1!+1/2!+1/3!+...+1/20!的和
 
 
package HomeWork3_2;
 
public class HomeWork3_2 {
 
          /**
           * 求1/1!+1/2!+1/3!+...+1/20!的和
           */
          public static void main(String[] args) {
                   double sum = 0.0, x = 1;
                   for (int j = 1; j <= 20; j++) {
                             x *= j;
                             sum += 1.0 / x;
                   }
                   System.out.println(sum);
          }
 
}
 
 
    3.1-1/2+1/3-1/4+……+1/99-1/100   
 
 
package HomeWork3_3;
 
public class HomeWork3_2 {
 
          /**
           * 1-1/2+1/3-1/4+……+1/99-1/100
           */
          public static void main(String[] args) {
                   double sum=0.0;
                   int flag=-1;
                   for (int i = 1; i <= 100; i++) {
                             flag*=-1;
                             sum+=flag*(1.0/i);
                   }
                   System.out.println(sum);
          }
 
}
 
 
    4.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,
    低于10万元的部分按10%提成,高于10万元的部分,    可提成7.5%;20万到40万之间时,高于20万元的部分,可
    提成5%;40万到60万之间时高于40万元的部分,可 提成   3%;60万到100万之间时,高于60万元的部分,可提成
    1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
 
 
package HomeWork3_4;
 
import java.util.Scanner;
 
public class HomeWork3_4 {
 
          /**
           * 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,
    低于10万元的部分按10%提成,高于10万元的部分,    可提成7.5%;20万到40万之间时,高于20万元的部分,可
    提成5%;40万到60万之间时高于40万元的部分,可 提成   3%;60万到100万之间时,高于60万元的部分,可提成
    1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
 
           */
          public static void main(String[] args) {
                   Scanner scan = new Scanner(System.in);
                   System.out.println("请输入当月利润(单位:万元)");
                   int a=scan.nextInt();
                   if(a<=10){
                             System.out.println("奖金为:"+(a*0.1)+"万元");
                   }else if(a<=20){
                             System.out.println("奖金为:"+(1+(a-10)*0.075)+"万元");
                   }else if (a<=40) {
                             System.out.println("奖金为:"+(1.0+0.75+(a-20)*0.05)+"万元");
                   }else if (a<=60) {
                             System.out.println("奖金为:"+(1.0+0.75+1+(a-40)*0.03)+"万元");
                   }else if (a<=100) {
                             System.out.println("奖金为:"+(1.0+0.75+1+0.6+(a-60)*0.015)+"万元");
                   }else if (a>=100) {
                             System.out.println("奖金为:"+(1.0+0.75+1+0.6+0.6+(a-100)*0.01)+"万元");
                   }
          }
 
}
 
 
    5.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222
    (此时共有5个数相加),几个数相加由键盘控制
 
 
package HomeWork3_5;
 
import java.util.Scanner;
 
public class HomeWork3_5 {
 
          /**
           * 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222
           * (此时共有5个数相加),几个数相加由键盘控制
           */
          public static void main(String[] args) {
 
                   Scanner scan = new Scanner(System.in);
                   int a = 0, b = 0, sum = 0;
                   while (a <= 0 || a > 9) {
                             System.out.println("请输入要求和的数(大于0小于10)");
                             a = scan.nextInt();
                             b = a;
                             if (a <= 0 || a > 9) {
                                      continue;
                             } else {
                                      break;
                             }
                   }
                   System.out.println("请输入最大值得位数(大于0小于10)");
                   int k = scan.nextInt();
                   sum += a;
                   for (int i = 2; i <= k; i++) {
                             a *= 10;
                             a += b;
                             sum += a;
                   }
                   System.out.println(sum);
          }
 
}
 
 
 
    6.求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如:153 = 1的三次方 + 5的三次方+ 3的三次方。
 
 
package HomeWork3_6;
 
public class HomeWork3_6 {
 
          /**
           *
           * 求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。
           * 如:153 = 1的三次方 + 5的三次方+ 3的三次方
           */
          public static void main(String[] args) {
                   int l,m,n,a;
                   for (int i = 100; i < 999; i++) {
                             a=i;
                             l=a%10;
                             a/=10;
                             m=a%10;
                             n=a/10;
                             if(i==(l*l*l+m*m*m+n*n*n)){
                                      System.out.println(i);
                             }
                   }
          }
 
}
 
 
posted @ 2016-09-26 16:19  任凭江月待何人  阅读(257)  评论(0编辑  收藏  举报