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' ...
随机推荐
- OSCP Learning Notes - Buffer Overflows(1)
Introduction to Buffer Overflows Anatomy of Memory Anatomy of the Stack Fuzzing Tools: Vulnserver - ...
- vue配置 less 全局变量
在使用Vue开发的过程中,通常会用到一些样式的全局变量,如果在每个组件中引入就太繁琐了,维护性也不好,因此全局引入是个不错的想法.下面以less为例,记录一下全局引入less变量的步骤: 1.首先安装 ...
- Makefile中的一个坑
问题描述:Makefile中,我想将一个变量的后缀全部进行替换,如将所有的.c后缀变成.d后缀 方法:$(CUR_SOURCE: .c = .d ) 说明:查阅相关资料,了解到上述这种语法就可以将所有 ...
- Python编程初学者指南|百度网盘免费下载|Python新手入门资料
Python编程初学者指南|百度网盘免费下载 提取码:9ozx 目录 · · · · · · 第1章 启程:Game Over程序1.1 剖析Game Over程序1.2 Python简介1.2.1 ...
- P1359租用游艇(dp+dfs)
好久真的是好久没有做dp的问题了(QWQ)(我有学过这玩意???) 诶,人生呐! 今天来一个动归- 顺便可以回顾一下dfs. 这个题我觉得审题也非常重要 小可爱dp: #include <bit ...
- Python while 循环中使用 else 语句
Python while 循环中使用 else 语句: else:表示 while 中的语句正常执行完,然后执行 else 语句的部分. 示例: # while 判断条件: # 一行语句 或 多行语句 ...
- 1-Numpy的通用函数(ufunc)
一.numpy“通用函数”(ufunc)包括以下几种: 元素级函数(一元函数):对数组中的每个元素进行运算 数组级函数:统计函数,像聚合函数(例如:求和.求平均) 矩阵运算 随机生成函数 常用一元通用 ...
- PHP readlink() 函数
定义和用法 readlink() 函数返回符号连接的目标. 如果成功,该函数返回连接的目标.如果失败,则返回 FALSE. 语法 readlink(linkpath) 参数 描述 linkpath 必 ...
- PHP imageaffine - 返回经过仿射变换后的图像
imageaffine — 返回经过仿射变换后的图像,剪切区域可选.高佣联盟 www.cgewang.com 语法 resource imageaffine ( resource $image , a ...
- RectTransform的localPosition与anchoredPosition(3D)的区别
RectTransform继承自Transform,用于描述矩形的坐标(Position),尺寸(Size),锚点(anchor)和中心点(pivot)等信息,每个2D布局下的元素都会自动生成该组件. ...