方法:是一种语法结构,把一段代码封装成为一个功能,以方便重复调用。
提高代码的复用性,让程序的逻辑更清晰。
例子:
public class Test{
public static void main(String[] args){
int d= sum(10,30);
System.out.println(d);
}
public static int sum(int a,int b){
int c =a+b;
return c;
}
}
方法定义的完整格式:
修饰符 返回值类型 方法名(形参列表){
方法体代码(需要执行的功能代码)
return 返回值;
}
方法定义时,返回值类型、形参列表可以根据需求进行填写。
方法的调用:方法名( … )
有返回值类型的调用:
1.赋值调用:定义变量接收方法的结果
2.输出调用:放在输出语句中调用
3.直接调用:方法还是会执行,只是返回结果我们不要了。
无返回值方法的调用:直接调用。
方法的运行区域在栈内存里边。
实参:方法内部定义的变量
形参:在定义方法时,( )中所声明的
java的参数传递机制:值传递,
-
在传递实参给方法的形参时,传输实参变量中存储的值而不是实参变量本身。
-
基本数据类型传递的是存储的数据值,引用类型传输的是储存的地址值。
传输数组
public static void main(String[] args){
int[] d={};
printsz(d);
}
public static void printsz(int[] sz){
System.out.print("[");
if(sz != null && sz.length >0){
for (int i = 0; i < sz.length; i++) {
System.out.print(i==sz.length-1 ? sz[i]:sz[i]+",");
// if(i==sz.length-1){
// System.out.print(sz[i]);
// }else{
// System.out.print(sz[i]+",");
// }
}
}
System.out.print("]");
}
判断数组是否一致:
public static void main(String[] args){
int[] arr1={1,2,3,4,5};
int[] arr2={1,2,3,4,5};
System.out.println(printsz(arr1,arr2));
}
public static boolean printsz(int[] arr1,int[] arr2){
if(arr1.length==arr2.length){
for (int i = 0; i < arr1.length; i++) {
if(arr1[i]!=arr2[i]){
return false;
}
}
return true;
}else{
return false;
}
}
方法重载:同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法。可读性好,提高了开发效率。
调用方法时会通过参数的不同,区分调用的是哪个方法。
return; ——>立即跳出并结束当前方法的执行,可以用于任何方法中。
break; ——>跳出并结束当前循环的执行;只能用于结束所在循环,或者结束所在switch分支的执行。
continue; ——>跳出当前循环的当次执行,进入下一次循环;只能在循环中使用。
案例
飞机票
import java.util.Scanner;
public class App {
public static void main(String[] args){
//输入检测
Scanner sc =new Scanner(System.in);
System.out.println("机票原价:");
double money=sc.nextDouble();
System.out.println("机票的月份:");
int month =sc.nextInt();
System.out.println("仓位类型:");
String type=sc.next();
System.out.println(calc(money, month, type));
sc.close();
}
//定义方法
public static double calc(double money, int month, String type){
if (month>=5&&month<=10) {
switch(type){
case"头等舱":money *=0.9;break;
case"经济舱":money *=0.85;break;
default:System.out.println("舱位error!");
money=-1;
}
} else if(month==11||month==12||month>=1&&month<=4){
switch(type){
case"头等舱":money *=0.7;break;
case"经济舱":money *=0.65;break;
default:System.out.println("舱位error!");
money=-1;
}
} else{
System.out.println("月份有问题");
return -1;
}
return money;
}
}
生成随机的验证码:
import java.util.Random;
public class App {
public static void main(String[] args){
//调用获取验证码方法得到随机的验证码
String code=yzm(5);
System.out.println(code);
}
//定义方法
public static String yzm( int n){
//定义一个字符串变量记录
String code="";
Random r=new Random();
//定义一个for循环,循环n次
for (int i = 0; i < n; i++) {
//定义验证码有英文大小写,数字
int type=r.nextInt(3);
switch(type){
case 0:char ch=(char)(r.nextInt(26)+65);
code+=ch;
break;//A 65-Z 65+25
case 1:char ch1=(char)(r.nextInt(26)+97);
code+=ch1;
break;//a 97-z 97+25
case 2:code+=r.nextInt(10);
break;}//0-9
}
return code;
}
数组复制:
public static void main(String[] args){
int arr1[]={1,2,3,4,5};
//定义一个与数组1一样的长度
int arr2[]=new int[arr1.length];
//调用方法
copy(arr1, arr2);
printArray(arr1);
printArray(arr2);
}
//写一个输出数组的方法
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
}
System.out.println("]");
}
//写一个复制数组的方法
public static void copy(int arr1[] , int[] arr2) {
for (int i = 0; i < arr1.length; i++) {
arr2[i]=arr1[i];
}
}
评委打分:
import java.util.Scanner;
public class App {
public static void main(String[] args){
//定义一个动态数组
int scores[]=new int[6];
//键入分数
Scanner sc=new Scanner(System.in);
for(int i=0;i<scores.length;i++){
System.out.println("第"+(i+1)+"个评委打分");
int score = sc.nextInt();
scores[i]=score;
//scores[i]=sc.nextInt();
}
sc.close();;
int max=scores[0];
int min=scores[0];
int sum=0;
//找到最大值与最小值
for (int i = 0; i < scores.length; i++) {
if(scores[i]>max){
max=scores[i];
}
if(scores[i]<min){
min=scores[i];
}
//总分
sum+=scores[i];
}
//去除最大与最小,求平均值
double result=(sum-max-min)*1.0/(scores.length-2);
System.out.println(result);
System.out.println("最高分:"+max);
System.out.println("最低分:"+min);
}
}
数字加密:
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//定义数组长度
System.out.println("输入需加密的个数:");
int length=sc.nextInt();
int arr[]=new int[length];
//录入加密数字
for(int i=0;i<arr.length;i++){
System.out.println("请输入加密的"+(i+1)+"个数字");
int score = sc.nextInt();
arr[i]=score;
//scores[i]=sc.nextInt();
}
sc.close();
System.out.print("加密的数字:");
printArray(arr);
jiami(arr);
}
//加密
public static void jiami(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i]=(arr[i]+5)%10;
}
//使用2个变量占据数组的首位,一个变量向qian,一个向后,同步交换两者的值
for (int i = 0,j=arr.length-1; i < j; i++,j--) {
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
System.out.print("加密后的数字:");
printArray(arr);
}
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
}
System.out.println("]");
}
双色球系统开发:
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//6红1蓝
int[] luckNumbers=creatLuckNumber();
int[] userNumbers=userInputNumber();
//判断中奖情况
judge(luckNumbers,userNumbers);
}
public static int[] creatLuckNumber() {
int[] luckNumbers = new int[7];
//遍历数组,为每个位置生成号码
Random r = new Random();
for (int i = 0; i < luckNumbers.length-1; i++) {
//为当前位置生成一个不重复的
while (true) {
int data = r.nextInt(33) + 1;
//判断当前的data是否重复,默认没有重复
boolean flag = true;
for (int j = 0; j < i; j++) {
if (luckNumbers[i] == data) {
//重复
flag = false;
break;
}
}
if (flag) {
//不重复,可以使用
luckNumbers[i] = data;
break;
}
}
}
//生成一个1-16的号码作为蓝球号码
luckNumbers[6]=r.nextInt(16)+1;
return luckNumbers;
}
public static int[] userInputNumber(){
int[] userNumbers=new int[7];
//用户输入6个红球号码
Scanner sc =new Scanner(System.in);
for (int i = 0; i <userNumbers.length-1 ; i++) {
System.out.println("输入第"+(i+1)+"个红球号码(1-33),不重复:");
userNumbers[i]= sc.nextInt();
}
//输入蓝球号码
System.out.println("请输入蓝球号码(1-16):");
userNumbers[6]=sc.nextInt();
return userNumbers;
}
public static void judge(int[] luckNumber,int[] userNumber){
//定义2个变量记录红蓝球命中个数
int redLuck =0;
int blueLuck=0;
//判断红球命中个数
for (int i = 0; i < userNumber.length-1; i++) {
for (int j = 0; j < luckNumber.length-1; j++) {
if(userNumber[i]==luckNumber[j]){
redLuck++;
break;
}
}
}
//判断蓝球是否命中
blueLuck=luckNumber[6]==userNumber[6]?1:0;
System.out.println("中奖号码是:");
printArray(luckNumber);
System.out.println("您的号码是:");
printArray(userNumber);
System.out.println("您命中了几个红球:"+redLuck);
System.out.println("你是否命中蓝球:"+(blueLuck==1?"是":"否"));
//判断中奖情况
if (blueLuck==0){
switch (redLuck){
case 0:
case 1:
case 2:
case 3: System.out.println("谢谢惠顾");break;
case 4: System.out.println("恭喜您中奖10元");break;
case 5: System.out.println("恭喜您中奖200元");break;
case 6: System.out.println("恭喜您中奖500万元");break;
}
}else{
switch (redLuck) {
case 0:
case 1:
case 2: System.out.println("恭喜您中奖5元");break;
case 3: System.out.println("恭喜您中奖10元");break;
case 4: System.out.println("恭喜您中奖200元");break;
case 5: System.out.println("恭喜您中奖3000元");break;
case 6: System.out.println("恭喜您中奖1000万元");break;
}
}
}
public static void printArray(int[] arr) {
for (int i = 0; i <arr.length; i++) {
System.out.print(arr[i]+"\t");
}
System.out.println();
}