01、分析并完成以下需求:
1.定义一个方法,实现将指定int数组中的索引为偶数的元素值增加1
2.假如数组为{1,2,3,4,5,6,7},那么调用方法后,数组中的元素变为{2,2,4,4,6,6,8}
3.main方法中,调用方法测试结果
方法一:
package com.itheima;
//01、分析并完成以下需求:
// 1.定义一个方法,实现将指定int数组中的索引为偶数的元素值增加1
// 2.假如数组为{1,2,3,4,5,6,7},那么调用方法后,数组中的元素变为{2,2,4,4,6,6,8}
// 3.main方法中,调用方法测试结果
public class Lian01 {
public static void main(String[] args) {
//定义一个数组
int[]arr={1,2,3,4,5,6,7};
//调用数组,定义一个变量接收
int[] shuzu = Arr(arr);
//循环遍历数组,并输出数组值
System.out.print("{");
for (int i = 0; i < shuzu.length; i++) {
System.out.print(shuzu[i]+" ");
}
System.out.print("}");
}
//1.定义一个方法,实现将指定int数组中的索引为偶数的元素值增加1
public static int[] Arr(int[]arr){
//循环遍历数组
for (int i = 0; i < arr.length; i++) {
//判断数组下标是都为偶数
if(i%2==0){
//为偶数的数值加1
arr[i]+=1;
}
}
return arr;
}
}
方法二:优化--->不定义返回值
Arrays.toString(arr):直接输出以数组的格式,不需要再循环遍历数组
package com.itheima;
import java.util.Arrays;
//01、分析并完成以下需求:
// 1.定义一个方法,实现将指定int数组中的索引为偶数的元素值增加1
// 2.假如数组为{1,2,3,4,5,6,7},那么调用方法后,数组中的元素变为{2,2,4,4,6,6,8}
// 3.main方法中,调用方法测试结果
public class Lian01 {
public static void main(String[] args) {
//定义一个数组
int[]arr={1,2,3,4,5,6,7};
//调用数组
Arr(arr);
}
//1.定义一个方法,实现将指定int数组中的索引为偶数的元素值增加1
public static void Arr(int[]arr){
//循环遍历数组下标为偶数的数值
for (int i = 0; i < arr.length; i+=2) {
//为偶数的数值加1
arr[i]+=1;
}
//Arrays.toString(arr):直接输出以数组的格式
System.out.println(Arrays.toString(arr));
}
}
02、分析并完成以下需求:
1.定义方法getMax()获取数组最大值、getMin()获取最小值、getAvg()获取元素平均值
2.在main方法中,生成一个长度为10的随机数组arr,元素范围是[1-100]
3.分别调用三个方法,传递该数组,接收返回值并打印
package com.itheima;
import java.util.Random;
//02、分析并完成以下需求:
// 1.定义方法getMax()获取数组最大值、getMin()获取最小值、getAvg()获取元素平均值
// 2.在main方法中,生成一个长度为10的随机数组arr,元素范围是[1-100]
// 3.分别调用三个方法,传递该数组,接收返回值并打印
public class Lian02 {
public static void main(String[] args) {
//生成一个长度为10的随机数组arr,元素范围是[1-100]
Random r = new Random();
//定义一个长度为10的动态数组
int[] arr = new int[10];
//循环随机生成1-100的数组值
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(100) + 1;
//打印数组值
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("最大值是:"+getMax(arr));
System.out.println("最小值是:"+getMin(arr));
System.out.println("平均值是:"+getAvg(arr));
}
// 定义方法getMax()获取数组最大值
public static int getMax(int[] arr) {
//定义一个变量接收数组最大值
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
//循环判断数组值,将更大的值赋给max
if (arr[i] > max) {
max = arr[i];
}
}
//返回数组最大值max
return max;
}
// 定义方法getMin()获取最小值
public static int getMin(int[] arr) {
//定义一个变量接收数组最小值
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
//循环判断数组值,将更小的值赋给min
if (arr[i] < min) {
min = arr[i];
}
}
//返回数组最小值min
return min;
}
// 定义方法getAvg()获取元素平均值
public static int getAvg(int[] arr) {
//定义求和变量sum
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
}
03、分析并完成以下需求:
1.定义一个方法,实现交换int数组中,两个索引上的元素值,并调用方法,查看运行效果
附加条件:用键盘录入两个索引值
例如,数组为{11,22,33,44,55,66},交换索引1和5位置上的元素,结果为{11,66,33,44,55,22}
重点:
Arrays.toString(brr)直接打印数组brr中内容
package com.itheima;
import java.util.Arrays;
import java.util.Scanner;
//03、分析并完成以下需求:
// 1.定义一个方法,实现交换int数组中,两个索引上的元素值,并调用方法,查看运行效果
//附加:键盘录入两个索引值
// 例如,数组为{11,22,33,44,55,66},交换索引1和5位置上的元素,结果为{11,66,33,44,55,22}
public class Lian03 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {11, 22, 33, 44, 55, 66};
//键盘录入要调换的索引值
Scanner sc = new Scanner(System.in);
//提示输入
System.out.println("请输入要交换的第一个索引值");
int num1 = sc.nextInt();
//提示输入
System.out.println("请输入要交换的第二个索引值");
int num2 = sc.nextInt();
//调用方法,定义一个新数组接收
int[]brr = Arr(arr,num1,num2);
/* //循环遍历数组brr
for (int i = 0; i < brr.length; i++) {
System.out.print(brr[i]+" ");
}*/
//Arrays.toString(brr)直接打印数组brr中内容
System.out.println(Arrays.toString(brr));
}
//定义一个方法,实现交换int数组中,两个索引上的元素值,并调用方法,查看运行效果
public static int[] Arr(int[] arr,int num1,int num2) {
//定义第三方变量
int temp = 0;
//数组内容置换
temp = arr[num1];
arr[num1] = arr[num2];
arr[num2] = temp;
return arr;
}
}
04、分析并完成以下需求:
录入字符串:sc.next();
将字符串转为字符数组:cahr[] arr = str.toCharArray();
字母字符、数字字符在码表中是连续出现的,a-z:97-113
1.提示用户键盘录入一个包含数字和字母的字符串(不用做是否包含数字和字母的判断)
2.遍历字符串,分别筛选出数字和字母,按照数字在前字母在后的规则,组成一个新的字符串,并打印
package com.itheima;
import java.util.Arrays;
import java.util.Scanner;
//04、分析并完成以下需求:
// 录入字符串:sc.next();
// 将字符串转为字符数组:cahr[] arr = str.toCharArray();
// 字母字符、数字字符在码表中是连续出现的,a-z:97-113
// 1.提示用户键盘录入一个包含数字和字母的字符串(不用做是否包含数字和字母的判断)
// 2.遍历字符串,分别筛选出数字和字母,按照数字在前字母在后的规则,组成一个新的字符串,并打印
public class Lian04 {
public static void main(String[] args) {
//录入字符串
Scanner sc = new Scanner(System.in);
//提示用户键盘录入一个包含数字和字母的字符串
System.out.println("请输入一个包含数字和字母的字符串:");
String str = sc.next();
//将字符串转为字符数组
char[]arr=str.toCharArray();
System.out.println(Arrays.toString(arr));
//定义一个变量,接收字母
String word = "";
//定义一个变量,接收数字
String num = "";
//循环遍历字符数组
for (int i = 0; i < arr.length; i++) {
if(arr[i]>=97&&arr[i]<=122){
//字母累加,因为是字符型,会直接叠加到后面
word+=arr[i];
}else{
//数字累加
num+=arr[i];
}
}
//输出数字连接字母
System.out.println(num+word);
}
}
05、分析并完成以下需求:
截取字符串方法:
String newStr = str.subString(起始索引);//默认到结束
String newStr = str.subString(起始索引,结束索引-1);
1.提示用户输入手机号码
2.电话号码必须为132、134、135开头,必须为11位
3.通过代码逻辑进行修改,要求中间四位使用*代替
示例:用户输入13279440986 控制台打印:132****0986
方法一:
方法二:字符串可以直接判断长度,不用转换为字符数组在进行判断
package com.itheima;
import java.util.Scanner;
//05、分析并完成以下需求:
// 截取字符串方法:
// String newStr = str.subString(起始索引);//默认到结束
// String newStr = str.subString(起始索引,结束索引-1);
// 1.提示用户输入手机号码
// 2.电话号码必须为132、134、135开头,必须为11位
// 3.通过代码逻辑进行修改,要求中间四位使用*代替
// 示例:用户输入13279440986 控制台打印:132****0986
public class Lian05 {
public static void main(String[] args) {
//提示用户输入手机号
System.out.println("请输入您的手机号码:");
Scanner sc = new Scanner(System.in);
//电话号码必须为132、134、135开头,必须为11位
//定义一个字符串变量进行接收号码
String num = sc.next();
//截取号码前三位,对号码进行判断,从0开始不包括3
String newStr = num.substring(0, 3);
if (!newStr.equals("132")&&!newStr.equals("134")&&!newStr.equals("135") ) {
System.out.println("您输入的号码不符合要求,请重新输入");
}
//将字符串转为字符数组
char[] arr = num.toCharArray();
//对号码长度进行判断
if (arr.length != 11) {
System.out.println("sorry,您的电话长度不符合要求,请重新输入");
}
//定义三个变量,循环遍历数组,将正确的字符号码拼接位字符串
//前三位
String num1 = "";
//中间四位
String num2 = "";
//后四位
String num3 = "";
for (int i = 0; i < arr.length; i++) {
if (i < 3) {
num1 += arr[i];
} else if (i < 7 && i >= 3) {
num2 += "*";
}else{
num3+=arr[i];
}
}
System.out.println(num1+num2+num3);
}
}
package com.itheima;
import java.util.Scanner;
//05、分析并完成以下需求:
// 截取字符串方法:
// String newStr = str.subString(起始索引);//默认到结束
// String newStr = str.subString(起始索引,结束索引-1);
// 1.提示用户输入手机号码
// 2.电话号码必须为132、134、135开头,必须为11位
// 3.通过代码逻辑进行修改,要求中间四位使用*代替
// 示例:用户输入13279440986 控制台打印:132****0986
public class Lian05 {
public static void main(String[] args) {
//提示用户输入手机号
System.out.println("请输入您的手机号码:");
Scanner sc = new Scanner(System.in);
//电话号码必须为132、134、135开头,必须为11位
//定义一个字符串变量进行接收号码
String num = sc.next();
//截取号码前三位,从0开始不包括3
String start = num.substring(0, 3);
//截取号码后四位
String end = num.substring(7);
//对号码进行判断,长度不对直接报错
if (num.length() == 11 || start.equals("132") || start.equals("134") || start.equals("135")) {
//定义字符串,接收拼接后的号码
String number= start +"****" + end;
System.out.println(number);
} else {
System.out.println(" sorry,您的电话长度不符合要求,请重新输入");
}
}
}
06、分析并完成以下需求:
1.提示用户录入一个字符串,要求字符串中必须存在字母(定义方法)
2.不符合要求:提示录入有误!重新录入
3.符合要求:判断字符串中大写字母出现次数并打印(定义方法)
package com.itheima;
import java.util.Arrays;
import java.util.Scanner;
//06、分析并完成以下需求:
// 1.提示用户录入一个字符串,要求字符串中必须存在字母(定义方法)
// 2.不符合要求:提示录入有误!重新录入
// 3.符合要求:判断字符串中大写字母出现次数并打印(定义方法)
public class Lian06 {
public static void main(String[] args) {
panDuan();
}
//提示用户录入一个字符串,要求字符串中必须存在字母(定义方法)
public static void panDuan() {
//定义一个计数器
int count = 0;
//提示用户输入一个字符串
System.out.println("请输入一个带字母的字符串:");
Scanner sc = new Scanner(System.in);
//键盘录入一个字符串
String str = sc.next();
//将字符串转化为字符数组
char[] arr = str.toCharArray();
//输出数组,能直观看见
System.out.println(Arrays.toString(arr));
//遍历数组,判断是否含有字母
for (int i = 0; i < arr.length; i++) {
//char c = str.charAt(i):获取字符串str中的字母,赋值给字符遍历c
char c = str.charAt(i);
if (c < 'a' && c > 'z' || c < 'A' && c > 'Z') {
//不含字符,报错
System.out.println("您输入的字符串不符合要求");
break;
} else if (c >= 'A' && c <= 'Z') {
count++;
}
}
System.out.println(count);
}
}
07、分析并完成以下需求:
1.我国的居民身份证号码,由17位数字本体码,和1位数字校验码组成
2.请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果
规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X
package com.itheima;
import java.util.Scanner;
//07、分析并完成以下需求:
//
// 1.我国的居民身份证号码,由17位数字本体码,和1位数字校验码组成
// 2.请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果
// 规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X
public class Lian11 {
public static void main(String[] args) {
//键盘输入
System.out.println("请输入您的身份证号:");
String str = new Scanner(System.in).next();
//判断是否合法
boolean result = cordNum(str);
System.out.println(result);
}
//判断18位身份证号,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X
public static boolean cordNum(String str) {
//1.判断号码是不是18位
if (str.length() != 18) {
return false;
}
//2.不能以0开头
if (str.startsWith("0")) {
return false;
}
//3.前十七位只能是数字
for (int i = 0; i < str.length(); i++) {
//转换为字符4
char c = str.charAt(i);
//对字符进行判断
if (c < '0' || c > '9') {
return false;
}
}
//4.判断第十八位
char c = str.charAt(17);
if (c < '0' || c > '9' &&c != 'X') {
return false;
}
return true;
}
}
方法二:略麻烦
package com.itheima;
//07、分析并完成以下需求:
//
// 1.我国的居民身份证号码,由17位数字本体码,和1位数字校验码组成
// 2.请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果
// 规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X
import java.util.Scanner;
public class Lian07 {
public static void main(String[] args) {
Card();
}
//定义方法
public static void Card() {
//提示用户输入身份证号
System.out.println("请输入您的个人身份证号:");
Scanner sc = new Scanner(System.in);
//键盘录入字符串
String cordnum = sc.next();
if(cordnum.length()!=18){
System.out.println("您输入的身份证号长度不正确");
}
//截取最后一位判断
String end = cordnum.substring(17);
//将字符串cordnum转化为字符数组arr
char[] arr = cordnum.toCharArray();
//遍历数组,判断身份证号是否合法
for (int i = 0; i < arr.length; i++) {
//将字符串总的字符赋给字符c,用来进行判断
char c = cordnum.charAt(i);
//判断首字符
if (arr[0] == 0) {
System.out.println("您输入的身份证号格式不正确");
break;
} else if (c >= '0' && c <= '9') {
System.out.print(c);
}else if(arr[17]>='A'||arr[17]>='Z'){
System.out.println(arr[17]);
}else{
System.out.println("您输入的身份证号格式不正确");
break;
}
}
}
}
08、分析并完成以下需求:
1.定义一个int类型数组{22,56,8,97,99,46,53,2,13},用自己的方式最终实现:
2.奇数放在数组的左边,偶数放在数组的右边(可以创建其他数组,不必须在原数组中改变)
package com.itheima;
import java.util.Arrays;
//08、分析并完成以下需求:
//
// 1.定义一个int类型数组{22,56,8,97,99,46,53,2,13},用自己的方式最终实现:
// 2.奇数放在数组的左边,偶数放在数组的右边(可以创建其他数组,不必须在原数组中改变)
public class Lian08 {
public static void main(String[] args) {
//定义一个静态数组
int[] arr = {22, 56, 8, 97, 99, 46, 53, 2, 13};
//定义一个新数组接方法的调用结果
int[]changeArr = changeArr(arr);
//定义字符串s,直接打印方法调用的数组
String s = Arrays.toString(changeArr);
System.out.println(s);
}
public static int[] changeArr(int[]arr){
//1.创建新数组
int[]newArr = new int[arr.length];
//2.从左边开始赋值
int left =0;
//3.右边
int right=arr.length-1;
//4.给新数组赋值
for (int i = 0; i < arr.length; i++) {
if(arr[i]%2==0){
//偶数
newArr[right]=arr[i];
right--;
} else{
//奇数
newArr[left]=arr[i];
left++;
}
}
//返回打乱重排的数组
return newArr;
}
}
09、分析并完成以下需求:
1.假设有一个长度为5的数组,数组元素通过键盘录入,如下所示:
int[] arr = {1,3,-1,5,-2};
2.要求:
创建一个新数组newArr[]
新数组中元素的存放顺序与原数组中的元素逆序
并且如果原数组中的元素值小于0在新数组中按0存储
最后输出原数组和新数组中的内容
package com.itheima;
import java.util.Arrays;
import java.util.Scanner;
//09、分析并完成以下需求:
// 1.假设有一个长度为5的数组,数组元素通过键盘录入,如下所示:
// int[] arr = {1,3,-1,5,-2};
// 2.要求:
// 创建一个新数组newArr[]
// 新数组中元素的存放顺序与原数组中的元素逆序
// 并且如果原数组中的元素值小于0在新数组中按0存储
// 最后输出原数组和新数组中的内容
public class Lian09 {
public static void main(String[] args) {
//1.定义一个长度为5,键盘录入的数组
int[]arr=new int[5];
Scanner sc = new Scanner(System.in);
//提示输入
System.out.println("请输入数组内容");
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
System.out.println(Arrays.toString(arr));
//2.创建一个新数组newArr[]
int []newArr= new int[5];
//定义一个变量为数组newArr索引
int j = 0;
//循环遍历数组arr
for (int i = arr.length-1; i >=0; i--) {
newArr[j]=arr[i];
j++;
}
//循环遍历数组newArr,对内容进行判断
for (int i = 0; i < newArr.length; i++) {
if(newArr[i]<0){
newArr[i]=0;
}
}
System.out.println(Arrays.toString(newArr));
}
}
10、分析并完成以下需求:
1.将数字{3,2,11,22,44,55,66...}保存到一个长度为10的数组中
2.定义一个新数组,长度为3,取出原来数组中随机三个元素(不考虑是否重复)
3.给新数组的元素赋值
4.求新数组所有元素的和
package com.itheima;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
//10、分析并完成以下需求:
// 1.将数字{3,2,11,22,44,55,66...}保存到一个长度为10的数组中
// 2.定义一个新数组,长度为3,取出原来数组中随机三个元素(不考虑是否重复)
// 3.给新数组的元素赋值
// 4.求新数组所有元素的和
public class Lian10 {
public static void main(String[] args) {
//1.定义一个长度为十的数组,去储存数字
int[] arr = new int[10];
//循环键盘录入数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字");
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
System.out.println(Arrays.toString(arr));
//2.定义一个新数组,长度为3,取出原来数组中随机三个元素
int[] brr = new int[3];
Random r =new Random();
for (int i = 0; i < brr.length; i++) {
//随机获取数组arr索引对应的值,并赋值给新数组
brr[i]=r.nextInt(arr[r.nextInt(10)]);
}
System.out.println("新数组元素有:"+Arrays.toString(brr));
//定义一个求和变量sum
int sum=0;
//循环遍历新数组求和
for (int i = 0; i < brr.length; i++) {
sum+=brr[i];
}
System.out.println("新数组元素和为:"+sum);
}
}