1.阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照。

源代码:

public class PassArray {

public static void main(String[] args) {

int a[] = { 1, 2, 3, 4, 5 };

String output = "The values of the original array are:\n";

for (int i = 0; i < a.length; i++)

output += "   " + a[i];

output += "\n\nEffects of passing array " + "element call-by-value:\n"+ "a[3] before modifyElement: " + a[3];

modifyElement(a[3]);

output += "\na[3] after modifyElement: " + a[3];

output += "\n Effects of passing entire array by reference";

modifyArray(a); // array a passed call-by-reference

output += "\n\nThe values of the modified array are:\n";

for (int i = 0; i < a.length; i++)

output += "   " + a[i];

System.out.println(output);

}

public static void modifyArray(int b[]) {

for (int j = 0; j < b.length; j++)

b[j] *= 2;

}

public static void modifyElement(int e) {

e *= 2;

}

运行结果

分析

对于数组的传递使用的是引用传递,改变的是原数据的的储存值;而对于数值的传递是按值传递,改变的只是原始数据的一个拷贝

按引用传递与按值传送数组类型方法参数的最大关键在于:

使用前者时,如果方法中有代码更改了数组元素的值,实际上是直接修改了原始的数组元素。

使用后者则没有这个问题,方法体中修改的仅是原始数组元素的一个拷贝。

2.以下代码的输出结果是什么?为什么会有这个结果?

  int[]  a  =  {5,  7  ,  20};

int[]  b  =  new  int[4];

System.out.println("b数组的长度为:"  +  b.length);

b  =  a;

System.out.println("b数组的长度为:"  +  b.length);

输出结果

   b数组的长度为:4

b数组的长度为:3

原因

   代码 b = a;表示的是将数组a的地址赋值给b,所以数组b就相当于是数组a,数组a有3个元素,所以数组b的长度为3;

3.请编写一个程序将一个整数转换为汉字读法字符串。比如“1123”转换为“一千一百二十三”。

   源代码

import java.util.Scanner;

public class zhuanhuan {

static String wei []={"","十","百","千","万"};

static String han []={"零","一","二","三","四","五","六","七","八","九"};

static String output="";

public static void main(String[] args){

System.out.println("输入一个数");

Scanner sc=new Scanner(System.in);

int n=sc.nextInt();

int c=weishu(n);

shu(n,c);

}

public static int weishu(int x){   //判断数的位数

int a=10,n=1;

double b=x/a;

if(b<1)

return n;

else

{n=2;

while(b>1)

{

a=a*10;

n++;

b=x/a;

}

return n;

}

}

public static void shu(int x,int y){   //将数的各个位分离存到数组中

int a=1;

int j=0;

int c[]=new int[y];

for(int i=1;i<y;i++)

{

a=a*10;

}

while(a>0)

{

int b=x/a;

c[j]=b;

j++;

x=x%a;

a=a/10;

}

int n=0;

for(int i=0;i<y;i++)    //将数字转换成汉字

{

int k=c[i];

if(k==0)

{

n++;

if(n>1)

{

n--;

continue;

}

output+=han[k];

continue;

}

output+=han[k]+wei[y - i -1];

}

System.out.println(output);

}

}

结果截图

4.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中。

要求将设计思路、程序流程图、源程序代码、结果截图、编程总结等

 

设计思路:

1.首先定义一个长度为实的数组;

2.循环十次产生十个随机数并存到数组中;

3.定义一个String类型变量;

4.将数组中的元素都连到String类型的变量中;

5.最后用消息框输出;

源代码

public class RandomInt {

public static void main(String[] args){

int sum=0;

String output="";

int a []=new int[10];

Random r=new Random();

for(int i=0;i<10;i++)

{

a[i]=(int) r.nextInt();

output+=a[i]+" ";

}

for(int i=0;i<10;i++)

sum+=a[i];

JOptionPane.showMessageDialog(null, "数组元素为:"+output);

JOptionPane.showMessageDialog(null, "数组元素的和是:"+sum);

}

}

流程图

截图

 

JAVA课堂练习-动手动脑--数组的更多相关文章

  1. java课堂_动手动脑4

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 答:在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0 ...

  2. java第二节课 java语法基础动手动脑

    动手动脑1:枚举变量   运行EnumTest.java package test2; public class EnumTest {  public static void main(String[ ...

  3. java学习——关于java课件上动手动脑问题简单的分析

    问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...

  4. java语法基础--动手动脑问题及课后实验问题

    ---恢复内容开始--- 动手动脑: 1:仔细阅读示例:EnumTest.java,运行它,分析运行结果 结果 :枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象.相 ...

  5. java学习(4)——动手动脑

    根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...

  6. JAVA课堂测试之一位数组可视化

    代码: package test;//求最大子数组 import java.util.Scanner; import javax.swing.JOptionPane; public class shu ...

  7. java文件课后动手动脑

    package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...

  8. java课程作业--动手动脑

    随机数: 1)编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231 ...

  9. Java语法基础动手动脑

    仔细阅读示例:EnumTest.Java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗? EnumTest.java public class EnumTest { pub ...

随机推荐

  1. ArcGIS案例学习笔记-查找重叠的多边形

    ArcGIS案例学习笔记-查找重叠的多边形 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于多边形图层,查找具有重叠(相互覆盖)的面 数据: 方法: 1. ...

  2. Promise 学习

    参考 https://www.jianshu.com/p/43f948051d65 // Promise里面传入一个函数类型的参数,这个函数类型的参数接收两个参数resolve reject var ...

  3. Python中struct.pack()和struct.unpack()

    https://blog.csdn.net/tjuyanming/article/details/79700601 https://www.cnblogs.com/yezl/p/5861787.htm ...

  4. phpexcel 导入超过26列时的解决方案

    $highestColumn = $sheet->getHighestColumn(); // 取得总列数 ++$highestColumn; for ($row = 5; $row <= ...

  5. Electrom will-download pause function

    1.code from github url-link: https://github.com/electron/electron/issues/7712 // to store downloadIt ...

  6. 04_web基础(六)之请求转发与重定向

    1.交互方式 Web组件之间跳转: 从AServlet 跳转到 BServlet. 三种类型: 1:请求转发(forward) 2:URL重定向(redirect) 3:请求包含(include) 3 ...

  7. 配置 redis 外网访问

    redis采用的安全策略,默认会只准许本地访问 1 2 3 4 5 6 7 8 9 10 通过简单配置,完成允许外网访问 [root@cache01 conf]# egrep "(^bind ...

  8. Netty 能做什么

    作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,会点SSH,写几个MVC,访问数据库和缓存,这些只是初等Java程序员干的事.如果你要进阶,想了解J ...

  9. Opengl库函数列表

    http://www.cnblogs.com/GameDeveloper/archive/2012/01/07/2315867.html

  10. OnContextMenu实现禁止鼠标右键

    OnContextMenu事件 定义和使用:oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单.注意:所有浏览器都支持 oncontextmenu 事件, contextmen ...