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. SQL Server 利用Profiler观察执行计划是否重用时SP:Cachemiss,SP:CacheInsert以及SP:CacheHit的含义

    本文出处:http://www.cnblogs.com/wy123/p/6913055.html 执行计划的缓存与重用 在通过SQL Profile观察一个SQL语句或者存储过程是否有可用的缓存执行计 ...

  2. HttpURLConnection类的使用

    此类以获取天气的一个api地址为例: package javaexcjs; import java.io.BufferedReader; import java.io.OutputStreamWrit ...

  3. Redis入门及主从配置

    1.Redis入门简介 Redis是一个开源的使用ANSI C语音编写.支持网络.可基于内存亦可持久化的日志型,Key-Value数据库.支持存储的value类型包括 string(字符串).list ...

  4. 面向对象程序设计(Java)本学期课程改革说明

    1.教学方式采用反转课堂教学法,学生课前完成知识的学习,课堂是师生之间.学生之间互动的场所,包括答疑解惑.知识的运用技巧探讨等,教师的课堂责任是理解学生的问题和引导学生去运用知识. 2.为更好地执行反 ...

  5. maven(二)基于intellij idea搭建ssm的maven项目结构

    项目配置文件整合步骤 1.这里使用maven来引入项目所需要的jar包,所以也就不需要手动来管理jar包了. pom.xml 配置模板如下: <project xmlns="http: ...

  6. async.waterfall

    [async.waterfall] if any of the tasks pass an error to their own callback, the next function is not ...

  7. STOP OUR NEGATIVE THOUGHTS

    Do you ever feel like you're in over your head and at any moment you're going to burst? You're not a ...

  8. 手机通过Charles抓取https包

      因为fiddler不能在mac上使用,而Charles是跨平台的,可以在mac上使用,所以需要了解一下Charles的使用   安装破解版Charles   下载破解版包,先启动一次未破解版的Ch ...

  9. html的textarea默认文案实现换行

    问题:textarea默认文案,想使用换行展示 但是使用/r/n</br>之类的都无效   解决方法: 使用下面字符实现换行   <textarea >第一行内容 第二行内容& ...

  10. 【scrapy】其他问题

    今天看<python爬虫开发与项目实践>的17章写代码的时候发现,一个方法的结尾带了红色波浪线: def _process_booklist_item(self,item): ''' 处理 ...