java基础03 进制转换 选择、循环结构

一、进制

进制符号例子
二进制0b(B)0b10
八进制0010
十进制无符号12
十六进制0x(X)0x0a
二进制 0 1
八进制 0~7
十六进制是 0~9 a~f ,a表示10,b表示11,依次类推

进制转换

1.其他进制转为十进制
基数 *系数的权次幂之和
基数即每个数字(不算符号)
系数即该数是几进制即几
权次幂 即从右往左数,从0开始数起
例子 0b1011
0b是二进制,所以系数为2,
从右往左开始算,在这里插入图片描述
最终得出11.
其他进制转十进制同理
2.十进制转换为其他进制
短除法
在这里插入图片描述

写结果时是从下往上的顺序写,因为最下面的数字乘的幂最大,应在最左边

三、位运算

左位移 << 乘以2的n次倍
右位移 >> 除以2的n次倍
无符号右位移 >>> 正整数除以2的n次倍 只能用于正整数,效率高于右位移
记忆: 看符号分辨哪边大,推出是乘还是除

public class Test01 {
public static void main(String[] args) {
//定义一个变量
//进行左位移
int num2 = 10;
int sum2 = num2 << 2; // num*2^2
System.out.println(sum2);
//进行右位移一
int num3 = 16;
int sum3 = num3 >> 1;//num*2^1
System.out.println(sum3);
//进行右位移二
int num4 =-8;
int sum4 =num4 >>2;
System.out.println(sum4);
int num5 =8;
int sum5 =num5 >>>2;
System.out.println(sum5);
}
}

四、键盘录入

直接上代码

import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
//实例化Scanner
Scanner input = new Scanner(System.in);
//调用方法获取数据
//int num = input.nextInt();
System.out.println("请输入数据:");
String s = input.next();
System.out.println(s);
}
}

注意 定义一个Scanner,一定要定义一个接受的变量,在录入多个时变量是不需要在定义Scanner

五、定义随机数

1.产生一个随机数 Math.random()==> 0-1的随机小数(包头不包尾,有0无1),要范围1-10的随机数,则*10+1,在强转为int类型。

int random = (int) (Math.random()*10+1);

理解 相当于数学中的[0,1) 乘10,即两边同时乘10,加1即两边同时加1,得[1,11),其他随机范围同理。

六、选择结构

单分支if
语法:
if(表达式) {
执行操作1
}else{
执行操作2
}
多分枝if
if(表达式1) {
执行操作1
}else if(表达式2){
执行操作2
}else if(表达式3) {
执行操作3

}else{
}
嵌套if
if(表达式1) {
if(表达式2){
执行的操作
}
}
switch
swtich(表达式) {
case 常量1:
执行操作1
break;
case 常量2:
执行操作2
break;
case 常量3:
执行操作3
break;
case 常量4:
执行操作4
break;

default:
执行操作n
break;
}
记住代码从上往下,从左往右运行
注意 if 语句中最后得else部分可以省略,省略的话程序有可能不执行if语句中的内容,因为可以不符合所有if语句的判断条件,然后运行后面的代码。同理,switch中最后的default 也可以省略。若没有省略,则必执行其中一个操作。另switch中的case中操作相同时可以合并。
区别:多分枝if用与区间,switch用于等值判断。

import java.util.Scanner;
public class Test12 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入学员的成绩");
int score=input.nextInt();
switch (score/10){
   case 10:
   case 9:
     System.out.println("优秀");
     break;
   case 8:
   case 7:
     System.out.println("良好");
     break;
   case 6:
     System.out.println("及格");
     break;
   default:
     System.out.println("不及格");
     break;
     }
  }
}

七、循环结构

for循环
1.语法:
for(初始化语句 A;循环条件判断 B;循环变量改变 C) {
循环操作 D
}
2.执行的流程:
A(i=1初始化语句)>B(i<=3循环条件判断(true))>D (循环操作执行)>C(i=2 循环变量改变)>B(循环条件判断 true)>D(循环操作)>C(循环变量改变 i=3)
… …
直到 i=4 停止循环
省略版:ABDCBDCBDC
3.说明:
A.初始化语句只执行一次
B.循环操作 0 -n 满足循环条件的次数
C.循环变量注意改变 避免四循环
D.初始化语句 循环条件判断 循环操作 避免死循环(写代码分析流程思路)
4.案例
1)需求
分别输入5门课程成绩,并计算平均值
2)分析
循环 初始化语句 i=1 循环条件判断 i<5 循环操作 键盘录入数据并统计总分 避免死循环 i++
键盘录入 用Scanner
总分/5 得平均分
3) 代码

import java.util.Scanner;
public class Test14 {
     public static void main(String[] args) {
         Scanner input = new Scanner(System.in);
         double sum=0;
         //使用循环
       for (int i=1;i<=5;i++){
          System.out.println("请输入第"+i+"门课程的成绩");
          int score =input.nextInt();
         sum=sum+score;
             }
      System.out.println("平均分是:"+(sum/5));
     }
}

输入数据错误,要求重复输入

1.使用for循环

import java.util.Scanner;
public class HomeWork01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个四位数:");
        for (int i = 1; i <= 3; i++) {
            int num = sc.nextInt();
            if (num >= 1000 && num < 10000) {
                int d = num % 10;//个位
                int c = (num % 100) / 10;//十位
                int b = (num % 1000) / 100;//百位
                int a = num / 1000;//千位
                int sum = a + b + c + d;
                System.out.println("千位是:" + a);
                System.out.println("百位是:" + b);
                System.out.println("十位是:" + c);
                System.out.println("个位是:" + d);
                System.out.println("和为:" + sum);
                return;
            } else {
                if (i == 3) {
                    System.out.println("你的次数已用完,请明天再来");
                } else {
                    System.out.println("输入错误,你还剩" + (3 - i) + "次机会,请输入一个四位数:");
                }

            }

        }



    }
}

其他变种

import java.util.Scanner;
public class HomeWork01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个四位数:");
        for (int i = 1; i <=3; i++) {
            int num = sc.nextInt();
            if (num >= 1000 && num < 10000) {
                //同上
                return;//结束main方法来结束循环,也可用break
            } else {
                   System.out.println("输入错误,请输入一个四位数:");
                   i--;
                }
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值