1、判断键盘录入的字符串是否对称,并在控制台打印输出结果。【考核知识点:StringBuilder类的方法】
/**
* Create by yanhongbo
* 日期 2021/4/25
*1、(必做录屏)判断键盘录入的字符串是否对称,并在控制台打印输出结果。【考核知识点:StringBuilder类的方法】
* 例如 "abccba"
* @Version 1.0
*/
public class Test03 {
public static void main(String[] args) {
//第一步键盘录入
System.out.println("请输入字符串 例如abccba");
String str = new Scanner(System.in).nextLine();
//第二步:创建Stringbuilder对象
StringBuilder sb=new StringBuilder(str);
//第三步:字符串反转
StringBuilder str2 = sb.reverse();
//把可变的字符串变成不可变的 调用toString();
String str3 = str2.toString();
/* if(str.equals(str3)){
System.out.println("字符串对称");
}else{
System.out.println("字符串不对称");
}*/
String s=(str.equals(str3))?"对称":"不对称";//利用三元运算符
System.out.println(s);
}
}
2、 计算小票信息上的总价。【考核知识点:字符串的解析和引用类型转换】
小票信息已给出 :
String message= "大拉皮-21.90;鱼香肉丝-22.80;巫山烤鱼-58.80”;
public class Test04 {
public static void main(String[] args) {
String message= "大拉皮-21.90;鱼香肉丝-22.80;巫山烤鱼-58.80";
//第一步:把字符串中的数字提取出来 split();
String[] arr = message.split("[-;]");
//遍历字符串数字
/* for (String s : arr) {
System.out.println(s);
}*/
double sum=0;
for(int i=1;i<arr.length;i+=2){
//第二步:把字符串转换为double类型 parseDouble(String s)
sum+=Double.parseDouble(arr[i]);
}
System.out.println(sum);//103.5
}
}
对 collection 进行迭代的迭代器,也就是Collection下面的所有实现类都可以使用Iterator进行遍历。
public boolean hasNext(); 如果仍有元素可以迭代,则返回 true
。 判断集合中是否有元素,如果有继续遍历。
public E next():返回迭代的下一个元素。 获取集合中元素
public void remove():从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 基本上很少用
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* Create by yanhongbo
* 日期 2021/4/25
* 演示迭代器Iterator中两个方法
* public boolean hasNext();
* public E next():
* @Version 1.0
*/
public class DemoIterator01 {
public static void main(String[] args) {
//第一步:创建集合
Collection<String> col=new ArrayList<>();//多态形式
//第二步:集合中添加元素
col.add("aaa");
col.add("bbb");
col.add("ccc");
col.add("ddd");
//第三步:使用迭代器Iterator进行对集合遍历
//备注:如果想使用Iterator必须得到Iterator对象之后 就可以使用hasNext();next():
Iterator<String> it = col.iterator();
//使用hasNext();next():
/*boolean b = it.hasNext();
System.out.println(b);
String next = it.next();
*/
/* if(it.hasNext()){
String next = it.next();
System.out.println(next);
}
if(it.hasNext()){
String next = it.next();
System.out.println(next);
}
if(it.hasNext()){
String next = it.next();
System.out.println(next);
}if(it.hasNext()){
String next = it.next();
System.out.println(next);
}*/
while(it.hasNext()){
String str = it.next();
System.out.println(str);
}
}
}
1、集合中的remove()方法与迭代器中的remove()的使用
迭代器中的remove()在获取元素之后才能使用该方法
集合的remove()在遍历之前或者遍历中都可以使用该方法
2、在迭代器遍历中使用集合中的remove()方法
不行的。会导致并发修改异常
格式 -jdk5的新特性
for(元素的数据类型 变量名:集合or数组变量名){
//循环体
}
快捷键 变量名.iter 然后enter
代码演示
public class Test {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
//增强for遍历
for (String s : list) {
System.out.println(s);
}
}
}
JDK5的新特性
装箱和拆箱、增强for、枚举、反射
public class Test01 {
public static void main(String[] args) {
ArrayList col=new ArrayList();
col.add(1);
col.add("a");
col.add('b');
//遍历
for(int i=0;i<col.size();i++){
//获取
String o =(String) col.get(i);
System.out.println(o);
}
}
}
运行结果
为了解决类型转换异常—泛型
类的后面定义泛型
格式:<数据类型>
例如 ArrayList<String> list=new ArrayList<>();
笔试题:泛型的好处
1、把运行期的异常提前到编译期。
2、防止类型转换异常
接口 类 方法 都可以定义泛型
public static <User> void add(){
}
通配符高级使用----受限泛型
之前设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置。但是在JAVA的泛型中可以指定一个泛型的上限和下限。
泛型的上限:
类型名称 extends 类 > 对象名称
只能接收该类型及其子类
泛型的下限:
类型名称 super 类 > 对象名称
只能接收该类型及其父类型
代码演示
public class Test03 {
public static void main(String[] args) {
Collection<Number> col=new ArrayList<>();
col.add(1);
Collection<Object> col1=new ArrayList<>();
getElement1(col);
// getElement1(col1);//报错 只能接受该类及其子类
getElement2(col);
getElement2(col1);//只能接受该类型及其父类
}
//泛型的上限
private static void getElement1(Collection<? extends Number> col){
}
//泛型的下限
private static void getElement2(Collection<? super Number> col){
}
}
打扑克-54张牌
public class DoudiZhu {
public static void main(String[] args) {
//创建54张扑克牌的集合
ArrayList<String> pokerbox=new ArrayList<>();
//创建花色的集合
ArrayList<String> colors=new ArrayList<>();
//创建数字的集合
ArrayList<String> numbers=new ArrayList<>();
//往花色集合中添加元素
colors.add("♠");
colors.add("♥");
colors.add("♦");
colors.add("♣");
//往数字集合中添加元素
for(int i=2;i<=10;i++){
numbers.add(i+"");
}
numbers.add("A");
numbers.add("J");
numbers.add("Q");
numbers.add("K");
//进行拼接
for (String color : colors) {
for (String number : numbers) {
pokerbox.add(color+number);
}
}
//大小王
pokerbox.add("大王");
pokerbox.add("小王");
//进行洗牌
Collections.shuffle(pokerbox);
//进行发牌-- 对3个玩家进行发牌 留3张底牌
ArrayList<String> play1=new ArrayList<>();//17张牌
ArrayList<String> play2=new ArrayList<>();//17张牌
ArrayList<String> play3=new ArrayList<>();//17张牌 n/3 0 1 2
ArrayList<String> dipai=new ArrayList<>();//3张
for(int i=0;i<pokerbox.size();i++){
//获取扑克牌
String card = pokerbox.get(i);
if(i>=51){
dipai.add(card);
}else if(i%3==0){
play1.add(card);
}else if(i%3==1){
play2.add(card);
}else{
play3.add(card);
}
}
System.out.println("玩家1"+play1);
System.out.println("玩家2"+play2);
System.out.println("玩家3"+play3);
System.out.println("底牌"+dipai);
}
}