6 数组 循环

总结

1.next()与nextLine ()

next():空格键、Tab键或Enter
nextLine ():只认 enter(可以得到带空格字符串)
在这里插入图片描述
在这里插入图片描述

2.a.compareToIgnoreCase(b);

==compareToIgnoreCase()方法:==不区分大小写,返回值是int
==compareTo()方法:==它是先比较对应字符的大小(ASCII码顺序) 返回值是int,
1、如果字符串相等返回值0
2、如果第一个字符和参数的第一个字符不等,结束比较,返回差值(ascii码值)
3、如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度.
负值代表:a< b
正值代表:a >b
0值代表:a == b

 //找到新元素的插入位置
	        for(int i = 0; i < musics.length; i++){
	            if(musics[i].compareToIgnoreCase(music) > 0){
	                index = i;
	                break;
	            }
	        }

3.flag的运用

题目

一、有一组英文歌曲,按照歌曲名称的字母顺序从“A”到“Z”顺序排列,保存在一个数组中。现在增加一首新歌,将它插入数组,并保持歌曲名称升序排列。程序运行结果如下图所示。

插入前的数组为:Island Ocean Pretty Sun
请输入该歌曲名称:Ready
插入后的数组为:Island Ocean Pretty Ready Sun

package com.lpy6;
import java.util.*;
public class song {
		public static void main(String[] args) {
			String[] musics = new String[]{"Island","Ocean","Pretty","Sun"};
	        String[] newMusics = new String[musics.length+1];//新歌曲数组
	        String music = "";    		//保存用户输入的歌曲名称
	        int index = musics.length;	//保存新歌插入位置  如果插入的最大
	        
	        //输出插入前的结果
	        System.out.print("插入前的数组为:");
	        for(int i = 0; i < musics.length ; i++){    
	            System.out.print(musics[i]+"  ");
	        }
	        
	        //将数组musics中的元素复制到新歌曲数组newMusics中
	        for(int i = 0; i < musics.length; i++){
	            newMusics[i] = musics[i];
	        }
	        
	        //输入歌曲名称
	        Scanner input = new Scanner(System.in);
	        System.out.print("\n请输入歌曲名称:");
	        music = input.nextLine();
	        
	        //找到新元素的插入位置
	        for(int i = 0; i < musics.length; i++){
	            if(musics[i].compareToIgnoreCase(music) > 0){
	                index = i;
	                break;
	            }
	        }
	        
	        //元素后移
	        for(int i = newMusics.length-1; i > index; i--){
	            newMusics[i] = newMusics[i-1];	//index下标开始的元素后移一个位置
	        }
	        newMusics[index] = music;    		//新元素放在index的位置
	        //输出插入后的结果
	        System.out.print("插入后的数组为:");
	        for(int i = 0; i < newMusics.length; i++){
	            System.out.print(newMusics[i]+"  ");
	        }
		}
}

二、有3个班级各4名学员参赛,从控制台输入每个班级参赛学员的成绩,要求统计出3个班级所有参赛学员中成绩大于85的学员的平均分,如何编程实现?

提示:
1、利用二重循环实现。
2、外层循环控制班级。
3、内层循环控制一个班级中的各个学员。
4、在二重循环执行过程中接收键盘输入的各个成绩并求和。

import java.util.Scanner;
public class ATMDemo {
public static void main(String[] args) {
	String pass = "";				//保存用户输入密码
	int amount = 0;					//取款金额
	String password = "111111";		//用户密码
	int count = 0;					//记录密码输入次数
	boolean isPass = false;			//密码是否通过验证
	Scanner input = new Scanner(System.in);
	
	while(count < 3 && !isPass){
		System.out.print("请输入密码:");
		pass = input.next();
		if(!password.equals(pass)){
			count++;
			continue;
		}
		isPass = true;				//密码通过验证
		System.out.print("请输入金额:");
		amount = input.nextInt();
		while(amount>0){
			if(amount<=1000 && amount%100==0){
				System.out.println("您取了" +amount+ "元");
				System.out.println("交易完成,请取卡!");
				break;				//完成交易,退出
			}else{
				System.out.print("您输入金额的金额不合法,请重新输入:");
				amount = input.nextInt();
				continue;			//继续让用户输入金额
			}
		}
	}
	if(!isPass){					//用户输入了3次错误密码
		System.out.print("密码错误,请取卡!");
	}
	}
}

三、假设一个简单的在ATM的取款过程如下:首先提示用户输入密码(password),最多只能输入3次,超过3次则提示用户“密码错误,请取卡”结束交易。如果用户密码正确,再提示用户输入金额(amount),ATM只能输出100元的纸币,一次取钱数要求最低0元,最高1000元。如果用户输入的金额符合上述要求,则打印输出用户取的钱数,最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。假设用户密码111111。则程序运行结果如下图所示。

请输入密码:123654
请输入密码:111111
请输入金额:789
您输入金额的金额不合法,请重新输入:2000
您输入金额的金额不合法,请重新输入:600
您取了600元
交易完成,请取卡!
提示:
1、利用二重循环实现。
2、外层循环控制用户输入密码的次数及是否验证通过。如果密码未通过验证,利用continue跳转到外层循环条件处,继续接受用户输入。
3、内层循环控制用户输入的金额。如果金额合法,则输出用户取钱金额并提示交易完成,并利用break跳出循环;否则利用continue跳到内层循环条件处继续接收用户输入。

import java.util.Scanner;
public class ATMDemo {
	public static void main(String[] args){
		String pass = "";				//保存用户输入密码
		int amount = 0;					//取款金额
		String password = "111111";		//用户密码
		int count = 0;					//记录密码输入次数
		boolean isPass = false;			//密码是否通过验证
		Scanner input = new Scanner(System.in);
		while(count < 3 && !isPass){
			System.out.print("请输入密码:");
			pass = input.next();
			if(!password.equals(pass)){
				count++;
				continue;
			}
			isPass = true;				//密码通过验证
			System.out.print("请输入金额:");
			amount = input.nextInt();
			while(amount>0){
				if(amount<=1000 && amount%100==0){
					System.out.println("您取了" +amount+ "元");
					System.out.println("交易完成,请取卡!");
					break;				//完成交易,退出
				}else{
					System.out.print("您输入金额的金额不合法,请重新输入:");
					amount = input.nextInt();
					continue;			//继续让用户输入金额
				}
			}
		}
		if(!isPass){					//用户输入了3次错误密码
			System.out.print("密码错误,请取卡!");
		}
	}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值