一 参数传递

1.定义:

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

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

们称为参数传递。

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

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

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

例1:

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

例2:

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

3.参数传递内存图解

4.结论:

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

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

二 随机点名器案例

1.需求:

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

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

  存储所有同学姓名

  总览全班同学姓名

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

2.需求分析

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

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

1.存储全班同学名字

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

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

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

  存储所有同学姓名

  总览全班同学姓名

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

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

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

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

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

3.代码编写:

  1. import java.util.Random;
  2. class demo03
  3. {
  4. public static void main(String[] args)
  5. {
  6. String[] arr = new String[4];
  7. save(arr);
  8. look(arr);
  9. getName(arr);
  10. }
  11. //储存全班同学姓名
  12. public static void save(String[] arr){
  13. arr[0]="张三";
  14. arr[1]="李四";
  15. arr[2]="王五";
  16. arr[3]="赵六";
  17. }
  18. //总览全班同学姓名
  19. public static void look(String[] brr){
  20. for (int i=0;i<brr.length ;i++ ){
  21. System.out.print(brr[i]+" ");
  22. }
  23. System.out.println();
  24. }
  25. //随机点名
  26. public static void getName(String[] arr){
  27. Random ra = new Random();
  28. int a = ra.nextInt(arr.length);
  29. System.out.println(arr[a]);
  30. }
  31. }

三 库存管理案例

1.需求:

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

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

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

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

  尺寸:物品大小,double型

  价格:物品单价,double型

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

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

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

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

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

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

进行业务逻辑的封装。

打印库存清单功能

库存商品数量修改功能

退出程序功能

2.需求分析

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

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

1.查看库存清单

2.修改商品库存数量

3.退出

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

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

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

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

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

3.代码:

  1. import java.io.*;
  2. import java.util.Scanner;
  3. import java.util.ArrayList;
  4. class HomeWork0630
  5. {
  6. public static void main(String[] args)throws IOException
  7. {
  8. menu();
  9. }
  10. public static void show(){
  11. System.out.println("------库存管理------");
  12. System.out.println("1.查看库存清单");
  13. System.out.println("2.修改商品库存数量");
  14. System.out.println("3.退出");
  15. System.out.println("请输入要执行的操作序号:");
  16. }
  17. public static void menu()throws IOException{
  18. Scanner sc = new Scanner(System.in);
  19. ArrayList<String> brand =new ArrayList<String>();
  20. ArrayList<Double> sizee =new ArrayList<Double>();
  21. ArrayList<Double> price =new ArrayList<Double>();
  22. ArrayList<Integer> num =new ArrayList<Integer>();
  23. brand.add("MacBookAir");
  24. brand.add("ThinkpadT450");
  25. brand.add("ASUS-FL5800");
  26. sizee.add(13.3);
  27. sizee.add(14.0);
  28. sizee.add(15.6);
  29. price.add(6988.88);
  30. price.add(5999.99);
  31. price.add(4999.5);
  32. num.add(5);
  33. num.add(10);
  34. num.add(18);
  35. while(true){
  36. show();
  37. int s = sc.nextInt();
  38. switch(s){
  39. case 1:
  40. look(brand,sizee,price,num);
  41. break;
  42. case 2:
  43. change(brand,num);
  44. break;
  45. case 3:
  46. return;
  47. default:
  48. System.out.println("输入有误请重新输入!");
  49. }
  50. }
  51. }
  52. public static void look(ArrayList<String> brand,ArrayList<Double> sizee,ArrayList<Double> price,
  53. ArrayList<Integer> num)throws IOException{
  54. System.out.println("----------商城库存清单----------");
  55. System.out.println("品牌型号\t尺寸\t价格\t库存数");
  56. for (int i=0;i<brand.size() ;i++ ){
  57. System.out.println(brand.get(i)+"\t"+sizee.get(i)+"\t"+price.get(i)+"\t"+num.get(i));
  58. }
  59. System.out.println("--------------------------------");
  60. int sum = 0;
  61. for (int i = 0;i<brand.size() ;i++ ){
  62. sum+=num.get(i);
  63. }
  64. System.out.println("总库存数:"+sum);
  65. double sum2 = 0;
  66. for (int i = 0;i<brand.size() ;i++ ){
  67. sum2+=num.get(i)*price.get(i);
  68. }
  69. System.out.println("库存商品总金额:"+sum2);
  70. System.out.println("输入回车键返回主菜单");
  71. if(new InputStreamReader(System.in).read() == 13){
  72. return;
  73. }
  74. }
  75. public static void change(ArrayList<String> brand,ArrayList<Integer> num){
  76. Scanner sca = new Scanner(System.in);
  77. while(true){
  78. System.out.println("-------------库存表-------------");
  79. System.out.println("序号\t品牌型号\t库存数");
  80. for (int i=0;i<brand.size() ;i++ ){
  81. System.out.println(i+1+"\t"+brand.get(i)+"\t"+num.get(i));
  82. }
  83. System.out.println("--------------------------------");
  84. System.out.println("请根据上表输入需要改库存商品的序号,按0返回主界面:");
  85. int s = sca.nextInt();
  86. int num1=0;
  87. if ((s-1)<brand.size()&&s>0){
  88. System.out.println("请输入修改后的内存数:");
  89. num1=sca.nextInt();
  90. num.set(s-1,num1);
  91. System.out.println("修改成功!结果为:");
  92. System.out.println("-------------库存表-------------");
  93. System.out.println("序号\t品牌型号\t库存数");
  94. for (int i=0;i<brand.size() ;i++ ){
  95. System.out.println(i+1+"\t"+brand.get(i)+"\t"+num.get(i));
  96. }
  97. System.out.println("--------------------------------");
  98. while(true){
  99. System.out.println("是否继续修改:按1继续,按0返回主菜单");
  100. int b = sca.nextInt();
  101. if (b==1){
  102. break;
  103. }else if(b==0){
  104. return;
  105. }else{
  106. System.out.println("您的输入有误请重新输入!");
  107. }
  108. }
  109. }else if(s==0){
  110. return;
  111. }else{
  112. System.out.println("您的输入有误请重新输入!");
  113. }
  114. }
  115. }
  116. }

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. OSCP Learning Notes - Buffer Overflows(1)

    Introduction to Buffer Overflows Anatomy of Memory Anatomy of the Stack Fuzzing Tools: Vulnserver -  ...

  2. vue配置 less 全局变量

    在使用Vue开发的过程中,通常会用到一些样式的全局变量,如果在每个组件中引入就太繁琐了,维护性也不好,因此全局引入是个不错的想法.下面以less为例,记录一下全局引入less变量的步骤: 1.首先安装 ...

  3. Makefile中的一个坑

    问题描述:Makefile中,我想将一个变量的后缀全部进行替换,如将所有的.c后缀变成.d后缀 方法:$(CUR_SOURCE: .c = .d ) 说明:查阅相关资料,了解到上述这种语法就可以将所有 ...

  4. Python编程初学者指南|百度网盘免费下载|Python新手入门资料

    Python编程初学者指南|百度网盘免费下载 提取码:9ozx 目录  · · · · · · 第1章 启程:Game Over程序1.1 剖析Game Over程序1.2 Python简介1.2.1 ...

  5. P1359租用游艇(dp+dfs)

    好久真的是好久没有做dp的问题了(QWQ)(我有学过这玩意???) 诶,人生呐! 今天来一个动归- 顺便可以回顾一下dfs. 这个题我觉得审题也非常重要 小可爱dp: #include <bit ...

  6. Python while 循环中使用 else 语句

    Python while 循环中使用 else 语句: else:表示 while 中的语句正常执行完,然后执行 else 语句的部分. 示例: # while 判断条件: # 一行语句 或 多行语句 ...

  7. 1-Numpy的通用函数(ufunc)

    一.numpy“通用函数”(ufunc)包括以下几种: 元素级函数(一元函数):对数组中的每个元素进行运算 数组级函数:统计函数,像聚合函数(例如:求和.求平均) 矩阵运算 随机生成函数 常用一元通用 ...

  8. PHP readlink() 函数

    定义和用法 readlink() 函数返回符号连接的目标. 如果成功,该函数返回连接的目标.如果失败,则返回 FALSE. 语法 readlink(linkpath) 参数 描述 linkpath 必 ...

  9. PHP imageaffine - 返回经过仿射变换后的图像

    imageaffine — 返回经过仿射变换后的图像,剪切区域可选.高佣联盟 www.cgewang.com 语法 resource imageaffine ( resource $image , a ...

  10. RectTransform的localPosition与anchoredPosition(3D)的区别

    RectTransform继承自Transform,用于描述矩形的坐标(Position),尺寸(Size),锚点(anchor)和中心点(pivot)等信息,每个2D布局下的元素都会自动生成该组件. ...