1增强for循环
是传统遍历的简写,编译时候还原传统循环
语法:
for(元素类型 变量: 数组){
使用变量遍历数组元素
}
好处就是编程方便
缺点:没有循环变量i,没有序号,无法替代使用了i的算法
代码:
public class Demo01 {
public static void main(String[] args) {
/**
* 增强for循环
*/
String[] names = {"Tom","Jack","Last","Lao"};
for (String name : names){
System.out.print(name+" ");
}
}
}
控制台展示:

2方法
方法:也成为函数\过程,将一个可以重复用的计算过程封装起来,方便重复使用
- 封装方法
- 调用方法:重复使用语法
定义方法语法:
修饰词 返回值类型 方法名称 (参数列表){
方法体
}
调用方法:
返回值 = 方法名称(参数);
- 修饰词:用于声明方法的可见范围
- 方法名称:方法的标识,用于区别不同的方法
- 参数列表:方法计算时候传入的参数
- 返回值:方法的计算结果
- 如果方法声明的返回值类型,则在方法中必须使用return语句返回一个值
- 如果方法没有返回值,则使用void声明返回值类型
- 方法体:方法的计算过程
列子:
public static double area(double r){
//计算圆的面积
return Math.PI * r * r;
}
流程(图解):

代码:
public class Demo02 {
public static void main(String[] args) {
/**
* 演示方法
*/
//计算半径为8的园面积
double d1 = area(8);
System.out.println(d1);
//计算半径为14的园面积
double d2 = area(14);
System.out.println(d2);
//报个错
double d3 = area(-44);
System.out.println(d2);
}
/**
* 计算园面积的方法
* @param radius
* @return
*/
private static double area(double radius) {
if (radius < 0 ){
//throw 抛
//Illegal 非法
//Argument 参数
//Exception 列外
throw new IllegalArgumentException("不能是负数");
}
//计算园面积
return Math.PI * radius * radius;
}
}
控制台展示:

2.1利用方法重新构建扑克牌案例
import javax.crypto.spec.PSource;
import java.util.Random;
public class Demo06 {
public static void main(String[] args) {
/**
* 扑克牌
* 扑克牌中一共有54个元素'
* 按照长度初始化元素;
*/
//定义一个String类型的数组用来存储54张扑克牌
String[] cards = newCards();
//调用创建扑克牌的方法
System.out.println("正常牌的顺序:");
//查看所有扑克牌是否存起来了
printAll(cards);
//洗牌(打乱牌)
shuffle(cards);
System.out.println("将牌打乱以后的顺序");
//测试扑克牌打乱顺序了吗
printAll(cards);
//定义三个String类型的数组,用来代表三个人
String[] laoLiu = new String[17];
String[] liSi = new String[17];
String[] wangWu = new String[17];
//定义一个String类型的数组存储底牌
String[] bases = new String[3];
//调用发牌的方法
deal(cards,laoLiu,liSi,wangWu);
//循环遍历他们三个的牌
System.out.println("老刘的牌:");
print(laoLiu);
System.out.println("李四的牌:");
print(liSi);
System.out.println("王五的牌");
print(wangWu);
System.out.println("底牌:");
//获取底牌的方法
bases(cards,bases);
//输出底牌
print(bases);
}//main方法结束
/**
* 查看玩家的扑克牌
* @param cards
*/
public static void print(String[] cards){
for (String card : cards){
System.out.print(card+" ");
}
System.out.println();
}
/**
* 查看所有扑克牌的方法
* @param cards
*/
public static void printAll(String[] cards){
for (int i = 0; i < cards.length; i++) {
System.out.print(cards[i]+" ");
if ((i+1) % 13 == 0) {
System.out.println();
}
}
System.out.println();
}
/**
* 洗牌的方法
* @param cards
* @return
*/
public static String[] shuffle(String[] cards){
//洗牌(打乱牌)
Random random = new Random();
for (int i = cards.length ; i > 0 ; i--){
//获取一个随机数范围是从0~i的随机数
//i每次循环减去1用来控制随机数的范围
int index = random.nextInt(i);
//拿到这个随机数进行位置交换
String temp = cards[i-1];
cards[i-1] = cards[index];
cards[index] = temp;
}
return cards;
}
/**
* 创建一个新的扑克牌
* @return
*/
public static String[] newCards(){
String[] cards = new String[54];
//给cards数组的最后两位赋值为大王,小王
cards[53] = "大🃏";
cards[52] = "小🃏";
//定义一个数组用来存储A,2,3,4 ... K
String[] rank = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int length = 0;
String[] RedBlack = {"♥","♦","♠","♣"};
for (int i = 0; i < RedBlack.length; i++) {
for (int j = 0; j < rank.length; j++) {
cards[length] = RedBlack[i]+rank[j];
length++;
}
}
return cards;
}
/**
* 发牌的方法
* @param cards
* @param player1
* @param player2
* @param player3
*/
public static void deal(String[] cards,
String[] player1,
String[] player2,
String[] player3){
//定义一个int类型的变量用来控制发牌的顺序
int num = 0;
for (int i = 0; i < 51; i+= 3) {
//老刘拿第i张牌
player1[num] = cards[i];
//李四拿第i+1张牌
player2[num] = cards[i+1];
//王五拿第i+1+1张牌
player3[num] = cards[i + 1 + 1];
//循环完毕让i+=3条过他们拿的这几张牌
num++;
}
}
/**
* 获取底牌
* @param cards
* @param bases
*/
public static void bases(String[] cards,String[] bases){
for (int i = 0 ; i < bases.length; i++) {
bases[i] = cards[cards.length-1-i];
}
}
}
控制台效果展示:

2.2标识符
是Java中变量,方法,类名等的识别符
- 不能以数组为开头,可以是字母_$
- 第二个字符开始,可以是数字,字符
- 不能使用运算符
- 字符范围是Unicode,包含中文、英文,等文字
建议:
- 建议使用英文作为标识符:(使用中文着,容易被打死)
- 采用驼峰命名法:第一个单词首字母小写,后续每个单词首字母大写
- getProductName
- javaScore
- 建议使用长变量名,见名知意
- goDead 去死
- duang 碰撞检查
- moveDown 向下移动
2.3字符串API
2.3.1获取字符串中的一个字符
字符串内部封装了一个字符数组,其字符有序号,从0开始
//char[] {今天天气不错}
String str = "今天天气不错";
// 0 1 2 3 4 5
可以从字符串中获取指定位置的字符
charAt(位置)
2.4案例
调整文字顺序不影响阅读
思路:
- 将相邻的两个中文子交换顺序
- 符号不参与交换,跳过
- 将处理结果存储到一个字符数组中
String str = "上海昨日新增死亡病例52例,平均年龄83.1岁,最小年龄33岁";
思路(图解):

代码展示:
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
/**
* 调整文字顺序不影响阅读
*/
Scanner sc = new Scanner(System.in);
System.out.println("请您输入一句话:");
String str = sc.nextLine();
char[] characters = new char[str.length()];
exchange(str, characters);
for (char character : characters){
System.out.print(character);
}
}
private static void exchange(String str, char[] characters) {
for (int i = 0; i < str.length(); i+=2) {
if (i+1 > str.length()-1){
characters[i] = str.charAt(i);
}else if((str.charAt(i) >= '\u4E00' && str.charAt(i) <= '\u9FA5')
&&
(str.charAt(i+1) >= '\u4E00' && str.charAt(i+1) <= '\u9FA5')){
characters[i] = str.charAt(i + 1);
characters[i + 1] = str.charAt(i);
}else{
characters[i] = str.charAt(i);
characters[i + 1] = str.charAt(i + 1);
}
}
}
}
控制台展示:
本文介绍了Java中的增强for循环,强调其编程便利性与限制。接着详细讲解了方法的定义、调用及参数列表,提供了一个扑克牌案例。还探讨了标识符的规则和命名建议,并展示了如何从字符串中获取特定字符。最后,提供了一个案例,通过交换相邻中文字符顺序来调整文字顺序。

被折叠的 条评论
为什么被折叠?



