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);
}
}
}
}