标识符:数字不能开头。
编程规范:注意大小写。
数据类型:基本类型,引用类型。
基本类型:boolea,char,byte,short,int,long,float,double
if(条件1){
//满足条件1时执行的语句
}else if(条件2){
//满足条件2时执行的语句
}else{
//以上条件都不满足时执行的语句
}
//按条件,从N个分支选1个执行(没有else可能不选)
例子:输入一个int,判断是正数/零/负数,如果数字>0是正数,或者数字=0是零,否则是负数
if(a>0){
}else if(a==0){
}else(a<0)
import java.util.*; public class TestIf { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.print("请输入整数:"); int num = sc.nextInt(); if(num>0) { System.out.println("是正数"); } else if(num==0) { System.out.println("是零"); } else { System.out.println("是负数"); } } }
练习:
1. 按照工资水平,选择交通工具去上海世博。
a) 8000以上(包括8000)选择飞机
b) 5000-7999选择火车
c) 3000-4999选择自行车
d) 其他选择11路公交车,即走路
import java.util.*; public class Jiaotong { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.print("请输入你的工资:"); float gz = sc.nextFloat(); if(gz>=8000){ System.out.println("老爷,您坐飞机吧"); }else if (gz>=5000/*&&gz<8000*/) { System.out.println("少爷,您坐火车吧"); }else if (gz>=3000/*&&gz<5000*/) { System.out.println("管家,你骑自行车吧"); }else{ System.out.println("看啥看,仆人就应该自己靠两条腿跑着去"); }//if...else...是顺序结构,从上往下,只选一条路,所以"/*...*/"中的内容可以省,但是要注意次序 } }
2. 实现一下出租车的计价。
a) 价格由里程数和等待时间组成
b) 3公里以内10块大洋
c) 4-15公里每公里2块大洋
d) 16公里开始,每公里3块大洋
e) 等待时间输入秒数,每2分半1元,不足部分不计价
f) 要求输入公里数和秒数,输出价格,比如18公里,300秒。
import java.util.*; public class Taxi { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("请输入路程公里数:"); int lc = sc.nextInt(); System.out.println("请输入等待时间秒数:"); int s = sc.nextInt(); int menoy; if(lc<0||s<0){ System.out.println("智商不够,暂时无法辨别负数和小数,请输入正整数,"); return; //return可以终止方法!活用return! } else if (lc<=3) { menoy= 10+s/150; System.out.println("刚好"+menoy+"块大洋"); } else if (lc>3&&lc<=15) { menoy = 10+(lc-3)*2+s/150; System.out.println("嘿嘿,赚了"+menoy+"块大洋"); }else { menoy = 10+(15-3)*2+(lc-15)*3+s/150; System.out.println("大丰收啊大丰收,赚了"+menoy+"块大洋"); } } }
3. 输入3个int,输出最大值。
import java.util.*; public class Ex3_3 { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("请输入3个整数:"); System.out.println("第1个整数:"); int a = sc.nextInt(); System.out.println("第2个整数:"); int b = sc.nextInt(); System.out.println("第3个整数:"); int c = sc.nextInt(); /*if (a>=b&&a>=c) { System.out.println("最大的数是"+a); }else if (b>=a&&b>=c) { System.out.println("最大的数是"+b); }else if (c>=a&&c>=b) { System.out.println("最大的数是"+c); }//这段是我写的*/ int max = a; if(b>max) max = b; //if如果{}中只有一句,{}可以省略 if(c>max) max = c; System.out.println("最大的数是"+max); } }
循环
for/while/do while
for(循环变量的初始化;循环条件;步进语句){
//需要反复执行的语句
}
for(int i=1;i<10000;i++){
System.out.println(i);
}
打印1到100的奇数,用三种方法:
public class TestFor { public static void main(String args[]) { System.out.println("方法一"); for (int i=1;i<=100 ;i++ ) { if (i%2==1) { System.out.print(i+"\t"); } }//ctrl+c(d) 退出死循环 System.out.println("方法二"); for (int j=1;j<=100 ;j=j+2 ) { System.out.print(j+"\t"); } System.out.println("方法三"); for (int k=0;k<50;k++ ) { System.out.print(2*k+1+"\t"); } } }
循环次数不确定的循环
for( ; ; ){
if(条件) break;
}//break用于跳出循环!
import java.util.Scanner; public class TestChat { public static void main(String args[]) { Scanner sc=new Scanner(System.in); for (; ; ) { System.out.println("请输入要说的话:"); String s = sc.next(); /*if (s=="die") { break; }//这是错误的,无法实现输入die退出*/ if (s.equals("die")) { break; } System.out.println("你说:"+s); } //String用equals比较相等!注意不能使用== } //循环次数不确定的循环处理方法 }
随机数的范围:
import java.util.Random; import java.util.Scanner; public class TestRandom { public static void main(String args[]) { Random r = new Random(); //Scanner sc = new Scanner(System.in); //int x = sc.nextInt(); //int y = sc.nextInt(); //int random = r.nextInt(10); //[0,9] //int random = r.nextInt(y)+x; int random = r.nextInt(100)+1; //[1,100] System.out.println(random); } }
练习:
1. 循环打印a-z(26个小写字母)
public class a_z { public static void main(String args[]) { System.out.println("方法一:"); for (char word = 'a'/*1*/;word<='z'/*2*/ ;word++/*3*/ ) { System.out.print(word+"\t");/*4*/ } //执行顺序 1 2 4 3 2 4 3 ... 2 System.out.println(); System.out.println("方法二"); for (char word = 97;word<123 ; word++ ) { System.out.print(word+"\t"); } System.out.println(); } }
2.打印星号
import java.util.Scanner; public class Star { public static void main(String args[]) { System.out.print("请输入列数:"); Scanner sc=new Scanner(System.in); int x =sc.nextInt(); for (int i=0;i<x ;i++ ) { for (int j=0;j<i+1;j++) { System.out.print("*"); } // System.out.println("\n"); System.out.println(); } } }
3. 打印乘法表
a) 要求格式
1
2 4
3 6 9
……
9 18 27 …. 81
public class chengfa { public static void main(String args[]) { for (int i=1;i<10;i++) { for (int j=1;j<=i;j++) { System.out.print(i*j+" "); } System.out.println(); } } }
4. 有36个人,36块砖,每人搬了一次,正好搬完,男人每人搬4块,女人每人搬3块,小孩两人搬一块.问:几个男,几个女,几个小孩
public class bangzhuan { public static void main(String args[]) { for (int i=0;i<10;i++ ) { for (int j=0;j<13;j++ ) { int k=36-i-j; if ((4*i+3*j+k/2)==36&&k%2==0) //利用枚举法,要注意,小孩必须为偶数 { System.out.println("男人有"+i+"个"); System.out.println("女人有"+j+"个"); System.out.println("小孩有"+k+"个"); } } } } }
作业:
1. 今天代码全部掌握
2. 编程
a) 编写一个关于7的小游戏.把7的倍数/尾数是7/十位数是7的都剔除出去,打印其他数字.开始的数字用Scanner输入.比如:输入8。打印:8,9,10….到100结束.
import java.util.Scanner; public class Seven { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("请输入起始数字:"); for (int num = sc.nextInt();num<100 ;num++ ) { if (num%7==0) {continue; }else if (num%10==7) {continue; }else if (num/10==7) { }else{ System.out.print(num+"\t"); } } } }
b) 编写一个猜数字的游戏。流程:
i. 先是生成1到100的随机数,
ii. 然后请用户输入猜的数字,
iii. 比较两个数字,给出提示(大/小/对)
iv. 如果没猜对,重复2 和3步,直到猜对位置.
import java.util.Random; import java.util.Scanner; public class GuessNum { public static void main(String args[]) { Random r = new Random(); int random = r.nextInt(100)+1; int a=0; boolean b = true; do{ a=a+1; System.out.println("请输入你要猜的数字"); Scanner sc = new Scanner(System.in); //注意有个System.in int num = sc.nextInt(); if (num>random) { b=true; System.out.println("HOHO~大了~"); }else if (num<random) { b=true; System.out.println("HOHO~小了~"); }else { b= false; System.out.println("丫的~让你猜对了"); } }while (b==true); { System.out.println("你一共猜了"+a+"次,才猜中!"); } } }
c) int a = 32; int b=45;
在不出现第三个变量的前提下,转换为b = 32; a = 45;
d) 9870->0789->789
int a = 12345 => 54321
e) 打印1到200的所有素数(只能被1和它自身整除的数)
开头是2 3 5 7 11 ………..199
(两重循环+Boolean)
public class sushu { public static void main(String args[]) { for (int i=2;i<=200;i++ ) //对i进行循环表示 { boolean a = true; //定义一个布尔值a,初始为true for(int j=2;j<i;j++) //对j进行循环表示 { if (i%j==0) //如果i能被循环的j中的一个整除 { a=false; //将a改为false break; //跳出for(j)循环 } } if (a==false) //如果a为false { continue; //则跳过此数i } System.out.print(i+"\t"); //打印i } } }
注:关于c)和d)两题,明天再给出答案