程序流程控制
从键盘上获取 import java.util.Scanner;(先导入包)
Scanner scan = new Scanner(System.in);
int grade = scan.nextInt();
但是char(字符型–单个字符)类型是不能被输入的只能输入字符串类型要想获取char类型
只能String word = scan.next();
char c = word.charAt(0);
/*
岳小鹏参加Java考试,
他和父亲岳不群达成承诺:
如果: 成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断
*/
import java.util.Scanner;
class if_homework{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int grade = scan.nextInt();
if (grade == 100){
System.out.println("奖励你一台BWM");
}else if (grade > 80 && grade <= 99){
System.out.println("奖励你一台iPhone X");
}else if (grade >= 60 && grade <= 80){
System.out.println("奖励你一台iPad");
}else{
System.out.println("什么都没有");
}
}
}
import java.util.Scanner;
class ScannerTest{
public static void main(String[] args)
{ Scanner scan = new Scanner(System.in);
System.out.println("请输入你的名字:");
String name = scan.next();
System.out.println("请输入你的年龄:");
int age = scan.nextInt();
System.out.println("请输入你的体重:");
double weight = scan.nextDouble();
System.out.println("你是否单身?(false/true)");
boolean isSingle = scan.nextBoolean();
System.out.println("我的名字是:"+name+"我今年"+age+"岁,我的体重是:"+weight+"kg,我是否单身:"+isSingle+".");
}
}
执行结果:
//三个数大小排序
import java.util.Scanner;
class Sort_test{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = scan.nextInt();
System.out.println("请输入第二个数:");
int num2 = scan.nextInt();
System.out.println("请输入第三个数:");
int num3 = scan.nextInt();
if (num1 >= num2){
if(num1 <= num3)
System.out.println(num3+","+num1+","+num2);
else if (num3 <= num2)
System.out.println(num1+","+num2+","+num3);
else
System.out.println(num1+","+num3+","+num2);
}
else{
if(num2 >= num1)
if(num3 >= num2)
System.out.println(num3+","+num2+","+num1);
else if(num3 <= num1)
System.out.println(num2+","+num1+","+num3);
else
System.out.println(num2+","+num3+","+num1);
}
}
}
}
if-else 如果执行语句只有一行那么大括号是可以省略的.
练习题
int x = 4;
int y = 1;
if (x > 2) {
if (y > 2)
System.out.println(x + y);
System.out.println("atguigu");
} else
System.out.println("x is " + x);
执行结果:
atguigu
因为x大于2 所以会执行第一个 if 里面语句但是因为第二个if后面没加大括号,所以第二个if只能跟x+y这句输出有关系,而atguigu这句话是跟第二个if是并列关系所以输出“atguigu”.
int x = 4;
int y = 1;
if (x > 2)
if (y > 2)
System.out.println(x + y);
System.out.println("atguigu");
else
System.out.println("x is " + x);
执行结果:
4
注:没有大括号的if-else只会管下一行代码
第一个if 会执行然后执行下一个if 第二个不成立然后执行else所以输出 4 .
boolean b = true;
//如果写成if(b=false)能编译通过吗?如果能,结果是?
if(b == false)
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
执行结果:
b
//如果改为flase那么就会变成结果为 c
改为flase就会把flase赋给b 所以结果为c.
获取随机数
int value = (int)(Math.random() * 90 + 10);
System.out.println(value);
//Math.random()产生大于等于0.0 小于1.0的区间,所以在0-99的数我们只能自己配.
// [0.0, 1.0) → [0.0,90.0)→[10.0,100.0)→{10.99)
//公式:如果想得到[a,b]: (int)(Math.random()*(b - a + 1) + a) 不要忘记括号.
/*家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,
当然要提出 一定的条件:
高:180cm以上;
富:财富1千万以上;
帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
*/
import java.util.Scanner;
class if_test4{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的身高:(cm)");
double height = scan.nextDouble();
System.out.println("请输入你的财富:(千万)");
int money = scan.nextInt();
System.out.println("是否帅气:(true/false)");
boolean handsome = scan.nextBoolean();
if(height >= 180 && money >=10 && handsome){
System.out.println("我一定要嫁给他");}
else if (height >= 180 || money >=10 || handsome)
{
System.out.println("嫁吧,比上不足,比下有余。");
}
else{
System.out.println("不嫁");
}
}
}
switch-case结构
default相当于else,case之后不能放范围只能是常量(字符串数值等, break是可加可不加的 经验之谈大多数情况都是需要加的
class SwitchCaseTest {
public static void main(String[] args) {
int number = 2;
switch(number){
case 0:
System.out.println("zero");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
default:
System.out.println("other");
}
}
}
执行结果:
zero
one
two
加break的情况(多选一)
class SwitchCaseTest {
public static void main(String[] args) {
int number = 3;
switch(number){
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
case 3:
System.out.println("three");
break;
default:
System.out.println("other");
//break;
}
执行结果:
three
用switch-case对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
当多个case输出语句一样时可以合并。
更优
/*
从键盘上输入2019年的“month”和“day”,要求通过程序 输出输入的日期为2019年的第几天。
*/
import java.util.Scanner;
class switch_case {
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入day:");
int day = scan.nextInt();
System.out.println("请输入month:");
int month = scan.nextInt();
int sumday = 0;
switch (month){
case 12:
sumday += 31;
case 11:
sumday += 31;
case 10:
sumday += 30;
case 9:
sumday += 31;
case 8:
sumday += 31;
case 7:
sumday += 30;
case 6:
sumday += 31;
case 5:
sumday += 30;
case 4:
sumday += 31;
case 3:
sumday += 28;
case 2:
sumday += 31;
case 1:
sumday += day;
}
System.out.println("2019年"+month+"月"+day+"日,是当年的第"+sumday+"天");
}
}
/*
从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
或
2)可以被400整除
*/
import java.util.Scanner;
class switchCase {
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt();
System.out.println("请输入月份:");
int month = scan.nextInt();
System.out.println("请输入那一天:");
int day = scan.nextInt();
int sumday = 0;
switch(month){
case 12:
sumday += 30;
case 11:
sumday += 31;
case 10:
sumday += 30;
case 9:
sumday += 31;
case 8:
sumday += 31;
case 7:
sumday += 30;
case 6:
sumday += 31;
case 5:
sumday += 30;
case 4:
sumday += 31;
case 3:
if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)){
sumday += 29;
}
else{
sumday += 28;
}
case 2:
sumday += 31;
case 1:
sumday += day;
}
System.out.println("今天是"+year+"年的第"+sumday+"天");
}
}
说明:1. 凡是可以使用switch-case的结构,都可以转换为if- else。反之,不成立。
2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),
又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。
for循环
//输出5次Hello world!
for(int i = 1;i <= 5;i++){//i:1,2,3,4,5
System.out.println("Hello World!");
}
//i:在for循环内有效。出了for循环就失效了。
//System.out.println(i);
练习:
/*
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。
说明:break关键字的使用
*/
import java.util.Scanner;
class fortest {
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入m:");
int m = scan.nextInt();
System.out.println("请输入n:");
int n = scan.nextInt();
int min = (m <= n)? m : n;
for (int i = min;i <= min ;i-- ){
if(m % i == 0 && n % i ==0){
System.out.println("最大公约数是:"+i);
break;
}
}
for (int i = 1; i>=1 ;i++ ){
if(i % m == 0 && i % n == 0){
System.out.println("最小公倍数是:"+i);
break;
}
}
}
}
/*打印水仙花数
输出所有的水仙花数,
所谓水仙花数是指一个3位数,
其各个位上数 字立方和等于其本身。
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5
*/
class shuixiannum{
public static void main(String[] args)
{
for(int i = 100 ;i < 1000;i++){
int hundreds = i/100;
int tens = i % 100 /10;
int ones = i % 10;
if (i == hundreds * hundreds *hundreds + tens * tens * tens + ones * ones * ones ){
System.out.println("水仙花数是:"+i);
}
}
}
}