一 参数传递

1.定义:

  参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,

这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我

们称为参数传递。

  定义方法时,参数列表中的变量,我们称为形式参数

  调用方法时,传入给方法的数值,我们称为实际参数

2.举例明确参数传递过程

例1:

public class ArgumentsDemo01 {
public static void main(String[] args) {
int a=5;
int b=10;
change(a, b);//调用方法时,传入的数值称为实际参数
System.out.println("a=" + a);
System.out.println("b=" + b);
} public static void change(int a, int b){//方法中指定的多个参数称为形式参数
a=200;
b=500;
}
}

例2:

public class ArgumentsDemo02 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
change(arr);// 调用方法时,传入的数值称为实际参数 for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
} public static void change(int[] arr) {// 方法中指定的多个参数称为形式参数
for (int i = 0; i < arr.length; i++) {
arr[i] *= 2;
}
}
}

3.参数传递内存图解

4.结论:

   当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响

   当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响

二 随机点名器案例

1.需求:

  随机点名器,即在全班同学中随机的打印出一名同学名字。

要做的随机点名器,它具备以下3个内容:

  存储所有同学姓名

  总览全班同学姓名

  随机点名其中一人,打印到控制台

2.需求分析

  在全班同学中随机的打印出一名同学名字。

我们对本案例进行分析,得出如下分析结果:

1.存储全班同学名字

2.打印全班同学每一个人的名字

3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学名字

该案例须有以下3个内容:

  存储所有同学姓名

  总览全班同学姓名

  随机点名其中一人,打印到控`制台

  随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,我们可以

针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。而在存储同学姓名时,如果对每

一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们

可以使用数组解决多个数据的存储问题。

3.代码编写:

import java.util.Random;
class demo03
{
public static void main(String[] args)
{
String[] arr = new String[4];
save(arr);
look(arr);
getName(arr);
}
//储存全班同学姓名
public static void save(String[] arr){
arr[0]="张三";
arr[1]="李四";
arr[2]="王五";
arr[3]="赵六";
}
//总览全班同学姓名
public static void look(String[] brr){
for (int i=0;i<brr.length ;i++ ){
System.out.print(brr[i]+" ");
}
System.out.println();
}
//随机点名
public static void getName(String[] arr){
Random ra = new Random();
int a = ra.nextInt(arr.length);
System.out.println(arr[a]);
}
}

三 库存管理案例

1.需求:

清单顶部为固定的数据,直接打印即可

清单中部为商品,为变化的数据,需要记录商品信息后,打印

经过观察,我们确定一项商品应该有如下几个属性:

  品牌型号: 即商品名称,String型

  尺寸:物品大小,double型

  价格:物品单价,double型

  配置:这一项为每种商品的配置信息,String型

  库存数:这一项为每种商品的库存个数,int型

清单底部包含了统计操作,需经过计算后,打印

我们发现两个单独的可变化量

总库存数:所有商品总个数,int型

库存商品总金额:所有商品金额,double型

进行业务逻辑的封装。

打印库存清单功能

库存商品数量修改功能

退出程序功能

2.需求分析

  管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。

-------------库存管理------------

1.查看库存清单

2.修改商品库存数量

3.退出

请输入要执行的操作序号:

每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。

选择“1.查看库存清单”功能,则控制台打印库存清单

选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新

选择“3.退出”功能,则退出库存管理,程序结束

3.代码:

import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
class HomeWork0630
{
public static void main(String[] args)throws IOException
{
menu();
}
public static void show(){
System.out.println("------库存管理------");
System.out.println("1.查看库存清单");
System.out.println("2.修改商品库存数量");
System.out.println("3.退出");
System.out.println("请输入要执行的操作序号:");
}
public static void menu()throws IOException{
Scanner sc = new Scanner(System.in);
ArrayList<String> brand =new ArrayList<String>();
ArrayList<Double> sizee =new ArrayList<Double>();
ArrayList<Double> price =new ArrayList<Double>();
ArrayList<Integer> num =new ArrayList<Integer>();
brand.add("MacBookAir");
brand.add("ThinkpadT450");
brand.add("ASUS-FL5800");
sizee.add(13.3);
sizee.add(14.0);
sizee.add(15.6);
price.add(6988.88);
price.add(5999.99);
price.add(4999.5);
num.add(5);
num.add(10);
num.add(18);
while(true){
show();
int s = sc.nextInt();
switch(s){
case 1:
look(brand,sizee,price,num);
break;
case 2:
change(brand,num);
break;
case 3:
return;
default:
System.out.println("输入有误请重新输入!");
}
}
}
public static void look(ArrayList<String> brand,ArrayList<Double> sizee,ArrayList<Double> price,
ArrayList<Integer> num)throws IOException{
System.out.println("----------商城库存清单----------");
System.out.println("品牌型号\t尺寸\t价格\t库存数");
for (int i=0;i<brand.size() ;i++ ){
System.out.println(brand.get(i)+"\t"+sizee.get(i)+"\t"+price.get(i)+"\t"+num.get(i));
}
System.out.println("--------------------------------");
int sum = 0;
for (int i = 0;i<brand.size() ;i++ ){
sum+=num.get(i);
}
System.out.println("总库存数:"+sum);
double sum2 = 0;
for (int i = 0;i<brand.size() ;i++ ){
sum2+=num.get(i)*price.get(i);
}
System.out.println("库存商品总金额:"+sum2);
System.out.println("输入回车键返回主菜单");
if(new InputStreamReader(System.in).read() == 13){
return;
}
}
public static void change(ArrayList<String> brand,ArrayList<Integer> num){
Scanner sca = new Scanner(System.in);
while(true){
System.out.println("-------------库存表-------------");
System.out.println("序号\t品牌型号\t库存数");
for (int i=0;i<brand.size() ;i++ ){
System.out.println(i+1+"\t"+brand.get(i)+"\t"+num.get(i));
}
System.out.println("--------------------------------");
System.out.println("请根据上表输入需要改库存商品的序号,按0返回主界面:");
int s = sca.nextInt();
int num1=0;
if ((s-1)<brand.size()&&s>0){
System.out.println("请输入修改后的内存数:");
num1=sca.nextInt();
num.set(s-1,num1);
System.out.println("修改成功!结果为:");
System.out.println("-------------库存表-------------");
System.out.println("序号\t品牌型号\t库存数");
for (int i=0;i<brand.size() ;i++ ){
System.out.println(i+1+"\t"+brand.get(i)+"\t"+num.get(i));
}
System.out.println("--------------------------------");
while(true){
System.out.println("是否继续修改:按1继续,按0返回主菜单");
int b = sca.nextInt();
if (b==1){
break;
}else if(b==0){
return;
}else{
System.out.println("您的输入有误请重新输入!");
}
}
}else if(s==0){
return;
}else{
System.out.println("您的输入有误请重新输入!");
}
}
}
}

java方法中参数传递与随机点名器、库存管理案例的更多相关文章

  1. java 对象的this使用 java方法中参数传递特性 方法的递归

    一.this关键字,使用的情形,以及如何使用. 1.使用的情形 类中的方法体中使用this  --初始化该对象 类的构造器中使用this --引用,调用该方法的对象 2.不写this,调用 只要方法或 ...

  2. java 用集合完成随机点名器和库存管理案例

    一 随机点名器 1.案例需求 随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息. 我们来完成随机点名器,它具备以下3个内容: 存储所有同学姓名 总览全班同学姓名 随机点名其中一人, ...

  3. Java方法之参数传递机制

    目录 Java方法之参数传递机制 基本数据类型 引用数据类型 综合练习 总结 Java方法之参数传递机制 Java方法中如果声明了形参,在调用方法时就必须给这些形参指定参数值,实际传进去的这个值就叫做 ...

  4. 068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题——基本数据类型传值

    068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题--基本数据类型传值 本文知识点:参数传递问题--基本数据类型传值 说明:因为时间紧张,本人写博 ...

  5. JAVA方法中的参数用final来修饰的原因

    JAVA方法中的参数用final来修饰的原因   很多人都说在JAVA中用final来修饰方法参数的原因是防止方法参数在调用时被篡改,其实也就是这个原因,但理解起来可能会有歧义,有的人认为是调用语句的 ...

  6. 2017.10.14 Java的流程控制语句switch&&随机点名器

    今日内容介绍 1.流程控制语句switch 2.数组 3.随机点名器案例 ###01switch语句解构     * A:switch语句解构       * a:switch只能针对某个表达式的值作 ...

  7. 【Java基础】11、java方法中只有值传递,没有引用传递

    public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...

  8. JAVA方法中参数到底是值传递还是引用传递

    当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递? 答:是值传递.Java 语言的参数传递只有值传递.当一个实例对象作为参数被传递到方法中时,参 ...

  9. java方法中只有值传递,没有引用传递

    public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...

随机推荐

  1. git分支管理的策略和冲突问题

    目录 备注: 知识点 关于分支中的冲突 分支管理的策略 分支策略 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文. 知识点 git log ...

  2. java 之 实例方法和类方法

    类方法:使用static修饰(静态方法),属于整个类的,不是属于某个实例的,只能处理static域或调用static方法: 实例方法:属于对象的方法,由对象来调用. 判断类方法,类方法的前面有stat ...

  3. 你闺女也能看懂的插画版 Kubernetes 指南

    Matt Butcher是Deis的平台架构师,热爱哲学,咖啡和精雕细琢的代码.有一天女儿走进书房问他什么是Kubernetes,于是就有了这本插画版的Kubernetes指南,讲述了勇敢的Phipp ...

  4. 题解 洛谷 P6349 【[PA2011]Kangaroos】

    先考虑对题目进行转化,我们称两个区间有交集为这两个区间能匹配,每个询问就是在序列中最长能连续匹配的长度. 对序列中的一个区间\([l,r]\)和询问的一个区间\([L,R]\),若满足\(L \leq ...

  5. Java 并发实践 — ConcurrentHashMap 与 CAS

    转载 http://www.importnew.com/26035.html 最近在做接口限流时涉及到了一个有意思问题,牵扯出了关于concurrentHashMap的一些用法,以及CAS的一些概念. ...

  6. docker-compose安装zabbix

    在网上的很多帖子,我亲自试过,多数不行,启动后zabbix_server是退出状态,所以觉得自己亲自写一篇帖子,以作记录 1.安装docker和docker-compose yum install - ...

  7. 第33课 C++中的字符串

    1. 历史遗留问题及解决方案 (1)历史遗留问题 ①C语言不支持真正意义上的字符串------c语言是用字符数组实现字符串 ②C语言用字符数组和一组函数模拟字符串操作 ③C语言不支持自定义类型,因此无 ...

  8. Java 构造方法及关键字:this、super、final、static

    一.构造方法 1.概念 在创建对象时,需要明确对象的属性值,即当使用new关键字创建对象时,同时给对象的属性初始化值. 这就需要用到构造方法.构造方法的格式: 修饰符 构造方法名(参数列表){ } 构 ...

  9. redis启动报错:The Windows version of Redis allocates a memory mapped heap for sharing with

    windows系统下通过cmd命令:redis-server.exe redis.windows.conf 启动redis报错,控制台报错如下: The Windows version of Redi ...

  10. 集合的一些实例的demo实现

    按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 准备牌: 牌可以设计为一个ArrayList,每个字符串为一 ...