交换两个数
package com.woniuxy.test;
public class MyTest02 {
public static void main(String[] args) {
int x=1,y=2;
System.out.println("交换前:");
System.out.println("x="+x);
System.out.println("y="+y);
// int t=x;
// x=y;
// y=t;
// x=x+y; //x=3
// y=x-y; //y=1
// x=x-y; //x=2
x=x^y;
y=x^y;
x=x^y;
System.out.println("交换后:");
System.out.println("x="+x);
System.out.println("y="+y);
}
}
if结构
if(
布尔表达式){
//代码块
//如果布尔表达式为true将执行的语句
}
if-else结构
两路分支,二选一
语法
if(条件){
//代码块
}else{
//代码块2
}
多重if
if(条件1){
//代码块1
}else if(条件2){
//代码块2
}else if(条件3)
//代码块3
}else{
//代码块4
}
if 有且只有一个
else if可以没有,一个,多个else 可以没有,一个
public class MyTest06 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入成绩");
int score=scanner.nextInt();
if(score<0 || score>100) {
System.out.println("分数无效,输入错误");
}else if(score>=90 && score<=100) {
System.out.println("优秀");
}else if(score>=80 ) {
System.out.println("良好");
}else if(score>=70) {
System.out.println("中等");
}else if(score>=60) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}
字符串和字符输入
public class MyTest07 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入姓名");
String name = scanner.next();
System.out.println("姓名:"+name);
//字符比相对要使用equals()方法
System.out.println(name.equals("zs"));
// System.out.println("输入性别");
// //charAt()是String类提供的方法,就是截取字符串中对应下标的字符,0就是第一个
// char gender=scanner.next().charAt(0);
// System.out.println("性别:"+gender);
//
// System.out.println(gender=='男');
//
}
}
选择嵌套
所有的if和else分支中可以再添加选择结构
注意代码格式:有括号层次代码嵌套,缩进
三目运算符
目:参与运算数的个数
单目运算符 +(正) -(负) ++(真增) --(自减)
双目运算符
三目运算符 (boolean值表达式)?(表达式1):(表达式2)
public class MyTest13 {
//求两个数的最大值
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入一个数");
int numA = scanner.nextInt();
System.out.println("输入一个数");
int numB = scanner.nextInt();
// int max;
// if(numA>numB) {
// max=numA;
// System.out.println("aaaa");
// }else {
// max=numB;
// System.out.println("bbbb");
// }
//优点:结构简单;缺点:不能实现复杂的逻辑功能
int max=(numA>numB)?numA:numB;
System.out.println("max="+max);
}
}
switch-case
switch( 变量或者表达式){
case 常量1:
分支代码块1;
break;
case 常量2:
分支代码块2;
break;
case 常量3:
分支代码块3;
break;
default:
分支代码块3;
break;
}
(表达式)可以使用的数据类型
// JDK1.5以前支持:byte short char int
// JDK1.5新增枚举字符串
// JDK1.7新增字符串
1)case标签后面必须为字符型常量和字面量!!!!
2)case语句的数据类型必须和变量的数据类型一致
3)变量或者表达式的值和某个一个case分支的常量值相等,执行当前分支
4)defalut可以不要,可以在任意地方!建议在最后一排!
5)case后面的常量不能重复
6)break 每个分支结束应该都有一个break;如果没有,case穿透,一旦进入这个分支,后面的分支不会再判断,一直往下执行,知道全部结束或者碰到后面的break;
7)switch case执行时,一定先匹配,匹配成功返回当前case值,再根据是否有break,判断是否继续持续输出或者是跳出判断。
8)
如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。9)如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。
Scanner scanner = new Scanner(System.in); System.out.println("输入名次"); int num = scanner.nextInt(); switch (num) { case 1: System.out.println("第一名"); System.out.println("第一名1"); break; case 2: System.out.println("第二名"); System.out.println("第二名2"); break; case 3: System.out.println("第三名"); System.out.println("第三名3"); break; default: System.out.println("没有奖励"); System.out.println("没有奖励4"); break; }
多重if和switch-case的优缺点:
多重if:功能强大
switch-case:多重if的在特殊情况下的用法
匹配的数据类型有限制
,有限区间
作业
1、输入四位会员号,会员号的百位数字等于产生的随机数字即为幸运会员
//输入四位数 1234
//获取四位数的百位数
//系统产生随机数 调用Math类的random()方法 Math.random()
//判断是否中奖 if-else
public class GressNumber {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
boolean a = true;
while (a) {
System.out.print("请输入一个四位数:");
String num;
num = scanner.nextLine();
int num1 = Integer.parseInt(num);
if (num.length() == 4) {
num1 = (num1 - ((num1 / 1000) * 1000)) / 100;
System.out.println("百位数是" + num1);
int roundnumber;
roundnumber = (int) (Math.random() * 10);
System.out.println("中奖号码:" + roundnumber);
if (num1 == roundnumber) {
System.out.println("恭喜中奖");
a = false;
} else {
System.out.println("很遗憾你没有中奖");
}
}else {
System.out.println("你输入的数字不是4位,请重新输入");
}
}
scanner.close();
}
2、输入成绩,输出对应的等级
import java.util.Scanner;
public class ScoreClassify {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入成绩:");
int score = scanner.nextInt();
if (score >= 90) {
System.out.println("优秀");
}else if (score >= 80) {
System.out.println("良好");
}else if (score >= 60) {
System.out.println("一般");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
3、系统中有原始的账号密码,用户输入账号密码,提示登录成功或者失败
public class LoginPassword {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
String account = "张三";
String password = "123456";
System.out.print("请输入账户:");
String scanAccout = scanner.nextLine();
if (account.equals(scanAccout)) {
System.out.print("请输入密码:");
String scanPassword = scanner.nextLine();
if (password.equals(scanPassword)) {
System.out.println("登录成功");
} else {
System.out.println("密码错误");
}
} else {
System.out.println("账户不存在");
}
scanner.close();
}
}
4、分段函数
x>0 y=1
x=0 y=0
x<0 y=-1
输入变量x的值,输出对应的函数值y
public class XToY {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.print("x=");
int x = scanner.nextInt();
int y = -2;
if (x > 0) {
y = 1;
} else if (x == 0) {
y = 0;
} else if (x < 0) {
y = -1;
}
if (y != -2) {
System.out.println("y=" + y);
}
scanner.close();
}
}
5、学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组
import java.util.Scanner;
import sun.print.resources.serviceui_zh_CN;
public class GameDivideGroups {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个成绩");
int time = scanner.nextInt();
if (time <= 10) {
System.out.println("请输入你的性别");
String sex = scanner.next();
char gender = sex.charAt(0);
if (gender == '男') {
System.out.println("男子组");
}else {
System.out.println("女子组");
}
}else {
System.out.println("不满足条件");
}
scanner.close();
}
}
6、购物结算
public class MyTest12 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("是否是会员y/n");
String isCust=scanner.next();
System.out.println("输入购物总金额");
double price=scanner.nextDouble();
double pay=price;
if(isCust.equals("y")) {
//会员
if(price>=200) {
pay=price*0.75;
}else {
pay=price*0.8;
}
}else {
//非会员
if(price>=100) {
pay=price*0.9;
}//else {
// pay=price;
// }
}
//统一输出
System.out.println("应付总金额:"+price);
System.out.println("实付总金额:"+pay);
}
}
public class VipMoney {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("请输入是否是会员:是(y)/否(其他字符)");
String vip = scanner.next();
System.out.println("请输入购物金额:");
Double dicount;
double money = scanner.nextDouble();
if (vip.equals('y')) {
if (money >= 200) {
dicount = money * 0.75;
}else {
dicount = money * 0.8;
}
}else if (money >= 100) {
dicount = money * 0.9;
}else {
dicount = money;
}
System.out.println("应付金额为"+money+"元");
System.out.println("实付金额为"+dicount+"元");
scanner.close();
}
}
7、求两个数的最大值(使用选择结构和三目运算符)
public class TwoNumberCompare {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个数");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
/* if (num1 > num2) {
System.out.println("max="+num1);
} else if (num1 < num2) {
System.out.println("max="+num2);
}else {
System.out.println("两数相等");
}*/
int max=(num1>num2)?num1:num2;
System.out.println("max="+max);
scanner.close();
}
}
8、求三个数的最大值(使用选择结构和三目运算符)
public class ThreeNumberCompare {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("请输入三个数");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();
/* if (num1 > num2) {
if (num1 > num3) {
System.out.println("max="+num1);
}else {
System.out.println("max="+num3);
}
} else if (num1 < num2) {
if (num2 > num3) {
System.out.println("max="+num2);
}else {
System.out.println("max="+num3);
}
}else if(num1 >num3){
if (num1 > num2) {
System.out.println("max="+num1);
}else {
System.out.println("max="+num2);
}
}else {
if (num3 > num2) {
System.out.println("max="+num3);
}else {
System.out.println("max="+num2);
}
}
*/
int temp=(num1>num2)?num1:num2;
int max=(temp>num3)?temp:num3;
System.out.println("max="+max);
scanner.close();
}
}
9、输入三个数,按从小到大输出
public class SortThreeNumber {
public static void main(String[] args){
int num1=0,num2=0,num3=0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入三个数:");
num1=scanner.nextInt();
num2=scanner.nextInt();
num3=scanner.nextInt();
int j;
if(num1>num2){
j=num2;
num2=num1;
num1=j;
}
if(num1>num3){
j=num3;
num3=num1;
num1=j;
}
if(num2>num3){
j=num3;
num3=num2;
num2=j;
}
System.out.println(num1+"<"+num2+"<"+num3);
}
}
10、输入两个运算数和运算符(+-*/),做相应的算数运算,输出结果。(使用多重if和switch-case)
public class IntputNumberSymbol {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个运算数:");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println("请输入运算符:");
String symbol = scanner.next();
double result = 0;
boolean flag = true;
/*
* if (symbol.equals("+")) { result = num1 + num2; }else if (symbol.equals("-"))
* { result = num1 + num2; }else if (symbol.equals("*")) { result = num1 * num2;
* }else if (symbol.equals("/")) { if (num2 == 0) {
* System.out.println("除数不能为0"); flag = false; }else { result = num1 / num2; }
*
* }else { flag = false; System.out.println("运算符错误"); } if (flag) {
* System.out.println(num1+symbol+num2+"="+result); }
*/
switch (symbol) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
System.out.println("除数不能为0!!");
flag = false;
} else {
result = num1 / num2;
}
break;
default:
System.out.println("运算符错误!!");
flag = false;
break;
}
if (flag) {
System.out.println(num1 + symbol + num2 + "=" + result);
}
scanner.close();
}
}
11、机票原价4000,4月到10月为旺季,头等舱打9折,经济舱75折。 其余月份为淡季,头等舱打6折,经济舱3折。输入购票月份和舱位代号(1代表头等舱,2代表经济舱),计算出实际应付的机票价格
public class FlyPrice {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("输入购票月份:");
int month = scanner.nextInt();
System.out.println("输入舱位代号(1代表头等舱,2代表经济舱):");
int num = scanner.nextInt();
int price = 4000;
double dicount=price;
switch (month) {
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
if (num == 1) {
dicount = price * 0.9;
}else {
dicount = price * 0.75;
}
break;
case 1:
case 2:
case 3:
case 11:
case 12:
if (num == 1) {
dicount = price * 0.6;
}else {
dicount = price * 0.3;
}
break;
default:
break;
}
System.out.println("实际应付价格:"+dicount+"元");
scanner.close();
}
}