java方法中参数传递与随机点名器、库存管理案例
一 参数传递
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方法中参数传递与随机点名器、库存管理案例的更多相关文章
- java 对象的this使用 java方法中参数传递特性 方法的递归
一.this关键字,使用的情形,以及如何使用. 1.使用的情形 类中的方法体中使用this --初始化该对象 类的构造器中使用this --引用,调用该方法的对象 2.不写this,调用 只要方法或 ...
- java 用集合完成随机点名器和库存管理案例
一 随机点名器 1.案例需求 随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息. 我们来完成随机点名器,它具备以下3个内容: 存储所有同学姓名 总览全班同学姓名 随机点名其中一人, ...
- Java方法之参数传递机制
目录 Java方法之参数传递机制 基本数据类型 引用数据类型 综合练习 总结 Java方法之参数传递机制 Java方法中如果声明了形参,在调用方法时就必须给这些形参指定参数值,实际传进去的这个值就叫做 ...
- 068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题——基本数据类型传值
068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题--基本数据类型传值 本文知识点:参数传递问题--基本数据类型传值 说明:因为时间紧张,本人写博 ...
- JAVA方法中的参数用final来修饰的原因
JAVA方法中的参数用final来修饰的原因 很多人都说在JAVA中用final来修饰方法参数的原因是防止方法参数在调用时被篡改,其实也就是这个原因,但理解起来可能会有歧义,有的人认为是调用语句的 ...
- 2017.10.14 Java的流程控制语句switch&&随机点名器
今日内容介绍 1.流程控制语句switch 2.数组 3.随机点名器案例 ###01switch语句解构 * A:switch语句解构 * a:switch只能针对某个表达式的值作 ...
- 【Java基础】11、java方法中只有值传递,没有引用传递
public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...
- JAVA方法中参数到底是值传递还是引用传递
当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递? 答:是值传递.Java 语言的参数传递只有值传递.当一个实例对象作为参数被传递到方法中时,参 ...
- java方法中只有值传递,没有引用传递
public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...
随机推荐
- Python 爬取异步加载的数据
在我们的工作中,可能会遇到这样的情况:我们需要爬取的数据是通过ajax异步加载的,这样的话通过requests得到的只是一个静态页面,而我们需要的是ajax动态加载的数据! 那我们应该怎么办呢??? ...
- OSCP Learning Notes - Buffer Overflows(1)
Introduction to Buffer Overflows Anatomy of Memory Anatomy of the Stack Fuzzing Tools: Vulnserver - ...
- Active Directory - Right Delegation and Audit
Delegate proper right to some user: Login/Logout Audit - GPO Setting - Event Viewer File Auditing M ...
- FaaS 给前端带来了什么?
一.Serverless 与 FaaS Serverless 是一种云计算理念,即无服务器计算(Serverless Computing): Serverless suggests that the ...
- TeamViewer如何绑定谷歌二次验证码/谷歌身份验证?
1.下载TeamViewer,找到谷歌二次验证界面 下载.注册TeamViewer后,点击右上角账户名-“编辑配置文件” [常规]-“双重验证”,点“启用” 进入[激活双重验证]界面,点“启动激活 ...
- java 如何正确的输出集合或者对象的值
java 如何正确的输出集合或者对象的值 一般out.println(Object) 和 System.out.println(Object),其中输出的都是Object.toString()方法.重 ...
- 【线性表基础】基于线性表的简单算法【Java版】
本文描述了基于线性表的简单算法及其代码[Java实现] 1-1 删除单链表中所有重复元素 // Example 1-1 删除单链表中所有重复元素 private static void removeR ...
- 使用brew services管理服务
简介 官网: https://github.com/Homebrew/homebrew-services macOS使用launchctl命令加载开机自动运行的服务,brew service可以简化l ...
- phpcms根据二级栏目列表写的三级栏目列表
<div class="container"> <!--左边树状导航--> <div class="CNLTreeMenu" id ...
- OceanBase安装和使用
链接 https://mp.weixin.qq.com/s?spm=a2c6h.12873639.0.0.41f92c9bH5FL2Y&__biz=MzU3OTc2MDQxNg==&m ...