可以作用在byte
但不能作用在long
可以作用在String上 jdk7.0新增
可以作用在byte上,
不能作用在long上
可以作用在String上(JDK7.0新增)
情况1 循环条件返回false
情况2 在循环体内,一旦执行到break跳出循环
情况1:循环条件返回false
情况2:在循环体内,一旦执行到break,跳出循环
不同点:
break 当前执行结束
continue 本次执行结束
相同点 在此关键词的后面不能声明执行语句
使用范围 在循环结构中的作用 相同点
break: switch-case
循环结构中 结束(或跳出)当前循环结构 在此关键字的后面不能声明执行语句。
continue: 循环结构中 结束(或跳出)当次循环 在此关键字的后面不能声明执行语句。
byte char int String shortjdk7.0新增 枚举 jdk5.0新增
switch中的表达式只能是特定的数据类型。如下:
byte \ short \ char \ int \ 枚举(JDK5.0新增) \ String(JDK7.0新增)
label: for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 10; j++) {
if (j % 4 == 0) {
continue label;
}
System.out.print(j);
}
System.out.println();
}
正确结果:123123123123
案例:从键盘输入一个整数,判断它是奇数还是偶数(这里把0归为偶数)
import java.util.Scanner
Scanner input = new Scanner(System.in)
int sum = input.nextInt();
if(sum % 2 == 0){
System.out.println(是奇数);
}else{
System.out.println(是偶数);
}
input.close();
说明:能够被2整除的是偶数,不能被2整除的是奇数
public class Exercise1{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("请输入一个整数:");
int num = input.nextInt();
if(num % 2 == 0){
System.out.println(num + "是偶数");
}else{
System.out.println(num + "是奇数");
}
}
}
案例:从键盘输入一个字符,判断它是字母还是数字,还是其他字符
数字范围:‘0’-‘9’
字母范围:‘A’-‘Z’,‘a’-‘z’
import java.util.Scanner
Scanner input = new Scanner(System.in)
char sum = input.next().charAt(0);
System.sout.println(“请输入一个字符”);
if(sum >=‘0’ && sum <= ‘9’>){
System.out.println(“你输入的是数字” + sum);
}else if(sum >= ‘A’ && sum <= ‘Z’ || sum >= ‘a’ && sum <= ‘z’){
System.out.println(“你输入的是字母” + sum);
}else{
System.out.println(“你输入的是其他字符”);
}
public class Exercise2{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("请输入一个字符:");
char c = input.next().charAt(0);
if(c >= '0' && c <= '9'){
System.out.println(c + "是数字.");
}else if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z'){
System.out.println(c + "是字母.");
}else{
System.out.println(c + "非数字非字母的其他字符.");
}
}
}
label: for (int i = 1; i <= 4; i++) { 1
for (int j = 1; j <= 10; j++) {
if (j % 4 == 0) {
continue label;
}
System.out.print(j);
}
System.out.println();
}
正确结果:123123123123
从键盘输入一个分数,如果成绩在[0,100]之间,就显示成绩值,否则就显示输入成绩错误!
if(inout >0 || input <= 100){
System.out.println("您的成绩为:" + input)
}else{
System.out.println("您输入有误,请重新输入!)
}
import java.util.Scanner;
public class Exercise4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入成绩:");
int score = input.nextInt();
if(score <0 || score > 100){
System.out.println("成绩输入有误!");
}else {
System.out.println("成绩为:" + score);
}
input.close();
}
}
从键盘输入年、月、日,要求年份必须是正整数,月份范围是[1,12],日期也必须在本月总天数范围内,如果输入正确,输出“年-月-日”结果,否则提示输入错误。
if(year> 0 ){ //先判断是否是整数
if(month>=1 && month <=12>){
if(month == 2 ){
if(year % 4 == 0 && year % 100 != 0 || year % 400 !=0){
day += 29;
}else{
day += 28;
}
if(month == 4 || month == 6 ||month == 9 ||month == 11){
day =30;
}else{
day = 31;
}
if(days == 1 && day <= days){
day >=
}
} //判断是否是闰年 如果是闰年则 输出29天
}
}
注意:需要考虑闰年的情况。
import java.util.Scanner;
public class Exercise5 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入日期:");
System.out.print("年:");
int year = input.nextInt();
System.out.print("月:");
int month = input.nextInt();
System.out.print("日:");
int day = input.nextInt();
input.close();
if (year > 0) {
if (month >= 1 && month <= 12) {
//计算month月的总天数
int days;
if (month == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { //此条件下,为闰年
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
if(day >= 1 && day <= days) {
System.out.println(year + "-" + month + "-" + day);
}else{
System.out.println("日期输入不合法");
}
} else {
System.out.println("月份输入不合法");
}
} else {
System.out.println("年份输入不合法");
}
}
}
从键盘输入一个大于1的自然数,判断它是否是素数。
提示:素数是指大于1的自然数中,除了1和它本身以外不能再有其他因数的自然数,即某个素数n,在[2,n-1]范围内没有其他自然数可以把n整除
boolean num = true//假设num是素数
//找不是素数的证据
for(int i =1 ;i>=num ;i++){
//i<=Math.sqrt(num);
if(num % 2 ==0 ){
flag =false; 能被整除就不是素数
}else{
flag = true
break;//找到其中一个可以把num整除的素数就可以退出了,因为num已经判定为不是素数了
//只有把[2,num-1]之间的所有数都检查过了,才能下定结论,num是素数
if(num>1 && flag){
是素数
}else{
不是素数
}
}
import java.util.Scanner;
public class Exercise6 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个整数:");
int num = input.nextInt();
boolean flag = true;//假设num是素数
//找num不是素数的证据
for(int i=2; i<num; i++){//i<=Math.sqrt(num);
if(num % i ==0){//num被某个i整除了,num就不是素数
flag = false;
break;//找到其中一个可以把num整除的数,就可以结束了,因为num已经可以判定不是素数了
}
}
//只有把[2,num-1]之间的所有数都检查过了,才能下定结论,num是素数
if(num >1 && flag){
System.out.println(num + "是素数");
}else{
System.out.println(num + "不是素数");
}
}
}
随机产生3个1-6的整数,如果三个数相等,那么称为“豹子”,如果三个数之和大于9,称为“大”,如果三个数之和小于等于9,称为“小”,用户从键盘输入押的是“豹子”、“大”、“小”,并判断是否猜对了
import java.util.Scanner;
int input = scanner.nextInt();
System.out.println(请输入你要压得数)
if(a+B+C == > 9 ){
System.out.println(大)
}else if(a+b+c < 9 )
提示:随机数 Math.random()产生 [0,1)范围内的小数
import java.util.Scanner;
public class Exercise7 {
public static void main(String[] args) {
//1、随机产生3个1-6的整数
int a = (int)(Math.random()*6 + 1);
int b = (int)(Math.random()*6 + 1);
int c = (int)(Math.random()*6 + 1);
//2、押宝
Scanner input = new Scanner(System.in);
System.out.print("请押宝(豹子、大、小):");
String ya = input.next();
input.close();
//3、判断结果
boolean result = false;
//switch支持String类型
switch (ya){
case "豹子": result = a == b && b == c; break;
case "大": result = a + b + c > 9; break;
case "小": result = a + b + c <= 9; break;
default:System.out.println("输入有误!");
}
System.out.println("a,b,c分别是:" + a +"," + b +"," + c );
System.out.println(result ? "猜中了" : "猜错了");
}
}
提示:使用Math.random() 产生随机数
Math.random() 产生[0,1)范围的随机值
Math.random() * 90:产生[0,90) 范围的随机值
Math.random() * 90 + 10:产生[10,100) 即得到 [10,99]范围的随机值
使用(int)(Math.random() * 90 + 10)产生一个两位数的随机数。
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
import java.util.Scanner;
public class Exercise8 {
public static void main(String[] args){
//随机产生一个两位数数字
int rand = (int)Math.random() * 90 + 10;
//从键盘上输入两位数
Scanner input = new Scanner(System.in);
System.out.print("请输入两位数的彩票号码:");
int num = input。nextInt();
//防止内容溢出
input.close();
int randshi = rand / 10;
int randge = rand % 10;
int numshi = num / 10;
int mumge = num % 10;
if(num == rand ){ //如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
System.out.println("奖励10000美金");
}else if(numshi == randge && numge == randshi){ //如果用户输入的所有数字匹配彩票的所有数字但顺序不一致,奖金3000
System.out.println("奖励3000元美金")
}else if(numshi == randshi || numge == randge){//如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000
System.out.println("奖励1000元美金");
}else if(numshi == randshi || numge == randge){//如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美
System.out.println("奖励500元美金");
}else{
System.out.println("抱歉,数字没有匹配,您的彩票作废"); //如果用户输入的数字没有匹配任何一个数字,则彩票作废。
}
}
}
求ax2+bx+c=0方程的根,其中a,b,c分别为函数的参数。
如果a≠0,那么:
(2)当b2-4ac=0,则一元二次方程有一个实数解:
(3)当b2-4ac<0,则一元二次方程在实数范围内无解;
如果a=0,b≠0,那么一元一次方程有一个解:
如果a=0,b=0,那么参数输入有误,该式子不是方程。
提示1:Math.sqrt(num); sqrt指平方根
例如:
求x2-4x+1=0方程的根
求x2-2x+1=0方程的根
import java.util.Scanner;
public class Exercise9 {
public static void main(String[] args){
//(1)先输入a,b,c三个函数的参数
Scanner input = new Scanner(System.in);
System.out.println("请输入方程:ax的平方 + bx + c = 0的三个参数:");
System.out.print("a:");
double a = input.nextDouble();
System.out.print("b:");
double b = input.nextDouble();
System.out.print("c:");
double c = input.nextDouble();
input.close();
//(2)根据参数的不同,求方程的根/解
if(a!=0){
double d = b*b - 4*a*c;
if(d>0){
double x1 = (-b + Math.sqrt(d))/(2*a);
double x2 = (-b - Math.sqrt(d))/(2*a);
System.out.println("一元二次方程有两个根:" + x1 + "," +x2);
}else if(d==0){
double x = -b/(2*a);
System.out.println("一元二次方程有1个根:"+ x);
}else{//d<0
System.out.println("一元二次方程在实数范围内无解");
}
}else{//a==0
if(b!=0){
double x = -c/b;
System.out.println("一元一次方程的根:" + x);
}else{
System.out.println("输入有误,a,b,c的值不能构成一个方程");
}
}
}
}
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
public class Exercise10 {
public static void main(String[] args){
//上半部分:正的等腰三角形
//5行
for(int i=1; i<=5; i++){
//(1)打印空格
/*
当i=1,打印4个空格,j=4,3,2,1 j>=i
当i=2,打印3个空格,j=4,3,2
当i=3,打印2个空格,j=4,3
当i=4,打印1个空格,j=4
当i=5,打印0个空格,j=4,让循环条件一次都不满足
*/
for(int j=4; j>=i; j--){
System.out.print(" ");
}
//(2)打印*
/*
当i=1,打印1个,j=1 j<=2*i-1
当i=2,打印3个,j=1,2,3,
当i=3,打印5个,j=1,2,3,4,5
当i=4,打印7个,j=1,2,3,4,5,6,7
当i=5,打印9个,j=1,2,3,4,5,6,7,8,9
*/
for(int j=1; j<=2*i-1; j++){
System.out.print("* ");
}
//(3)换行
System.out.println();
}
//下半部分:倒立的等腰三角形
//4行
for(int i=1; i<=4; i++){
//(1)打印空格
/*
当i=1,1个空格,j=1 j<=i
当i=2,2个空格,j=1,2
当i=3,3个空格,j=1,2,3
当i=4,4个空格,j=1,2,3,4
*/
for(int j=1; j<=i; j++){
System.out.print(" ");
}
//(2)打印*
/*
当i=1,7个*,j=1,2,3,4,5,6,7 j<=9-2*i;
当i=2,5个*,j=1,2,3,4,5
当i=3,3个*,j=1,2,3
当i=4,1个*,j=1
*/
for(int j=1; j<=9-2*i; j++){
System.out.print("* ");
}
//(3)换行
System.out.println();
}
}
}
需求:假设从2000年1月1日开始三天打渔,两天晒网,从键盘输入今天的日期年、月、日,显示今天是打鱼还是晒网?
public class Exercise11{
public static void main(String[] args){
//1、从键盘分别输入年、月、日
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("年:");
int year = input.nextInt();
System.out.print("月:");
int month = input.nextInt();
System.out.print("日:");
int day = input.nextInt();
/*
(1)先算出,这一天距离2000年1月1日是第几天
①第month月的day天
②第year年的[1,month-1]的满月
③从[2000,year-1]的满年天数
(2)用总天数%5,看余数,余数是1,2,3是打鱼,4和0是晒网
*/
int days = day;//①第month月的day天
//②累加[1,month-1]的满月天数
for(int i=1; i<month; i++){//这个i代表月份
if(i==4 || i==6 || i==9 || i==11){
days+=30;
}else if(i==2){
if(year%4==0 && year%100!=0 || year%400==0){
days+=29;
}else{
days+=28;
}
}else{
days+=31;
}
}
//③从[2000,year-1]的满年天数
for(int i=2000; i<year; i++){//这个i代表年份
if(i%4==0 && i%100!=0 || i%400==0){
days+=366;
}else{
days+=365;
}
}
//判断
if(days%5==1 || days%5==2 || days%5==3){
System.out.println("打鱼");
}else{
System.out.println("晒网");
}
}
}
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程 找出1000以内的所有完数。(因子:除去这个数本身的其它约数)
public class Exercise12 {
public static void main(String[] args){
//找出1000以内的所有完数
for(int i=1; i<1000; i++){
//判断i是否是完数,如果是就打印i
/*
完数?
一个数如果恰好等于它的因子之和
例如:6的因子:1,2,3
1,2,3,6是6的约数,能够把6给整除了
因子:除了6本身以外的约数
例如:18的因子:1,2,3,6,9 不是完数
如何判断i是否是完数?
(1)先找出i的所有的因子,并且累加它的所有的因子
(2)判断因子之和与i是否相等,如果相等就是完数
*/
//(1)先找出i的所有的因子,并且累加它的所有的因子
int iSum = 0;
for(int j=1; j<i; j++){
//如果j能够把i整除了,j就是i的因子
if(i%j==0){
iSum += j;
}
}
//(2)判断因子之和与i是否相等,如果相等就是完数
if(i == iSum){
System.out.println(i);
}
}
}
}
从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。例如:
public class Exercise13 {
public static void main(String[] args){
//从1循环到150
for(int i=1; i<=150; i++){
//在每行打印一个i的值
//System.out.println(i);//输出i之后,立刻换行
System.out.print(i);//只打印i的值
//每个3的倍数行上打印出“foo”
if(i%3==0){
//System.out.println("foo");//输出foo后立刻换行
System.out.print("\tfoo");//这里加\t是为了好看
}
//在每个5的倍数行上打印“biz”
if(i%5==0){
System.out.print("\tbiz");
}
//在每个7的倍数行上打印输出“baz”
if(i%7==0){
System.out.print("\tbaz");
}
//最后把这一行的事全部完成后,再换行
//System.out.print("\n");
System.out.println();//只打印换行
}
}
}
小鸡22文 66只 母鸡 26文 12只 公鸡 55文 10只
花100文钱买100只鸡。其中,公鸡5文1只、母鸡3文1只、小鸡1文3只
花100文钱正好买100只鸡,该如何分配?
public class Exercise14 {
public static void main (String[] args) {
// 公鸡只数的可能性
for (int gong = 0; gong <= 20 ;gong++ ) {
// 母鸡只数的可能性
for (int mu = 0; mu <= 33 ;mu++ ) {
// 小鸡只数
int xiao = 100 - gong - mu;
// 进行条件的判断
if ((xiao % 3 == 0) && (gong * 5 + mu * 3 + xiao / 3 == 100)) {
System.out.println("公鸡有"+gong+"只,母鸡有"+mu+"只,小鸡有"+xiao+"只");
}
}
}
}
}