JAVA课堂练习-动手动脑--数组
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课堂练习-动手动脑--数组的更多相关文章
- java课堂_动手动脑4
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 答:在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0 ...
- java第二节课 java语法基础动手动脑
动手动脑1:枚举变量 运行EnumTest.java package test2; public class EnumTest { public static void main(String[ ...
- java学习——关于java课件上动手动脑问题简单的分析
问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...
- java语法基础--动手动脑问题及课后实验问题
---恢复内容开始--- 动手动脑: 1:仔细阅读示例:EnumTest.java,运行它,分析运行结果 结果 :枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象.相 ...
- java学习(4)——动手动脑
根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...
- JAVA课堂测试之一位数组可视化
代码: package test;//求最大子数组 import java.util.Scanner; import javax.swing.JOptionPane; public class shu ...
- java文件课后动手动脑
package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...
- java课程作业--动手动脑
随机数: 1)编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231 ...
- Java语法基础动手动脑
仔细阅读示例:EnumTest.Java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗? EnumTest.java public class EnumTest { pub ...
随机推荐
- SQL中ISNULL的问题。
今天在写SQL代码的时候写了个 ISNULL(变量1,变量2),返回的结果居然是 "*" ,这个星号,郁闷了很久. 代码大意如下: ) declare @str2 int sele ...
- IE 11中 onpropertychange失效
https://msdn.microsoft.com/zh-cn/library/ie/dn265032(v=vs.85).aspx 将突变事件和属性更改事件迁移到突变观察者 Internet Exp ...
- 3D模板阴影原理
3D模板阴影原理 1:先从3dsMax中导出一个简单的场景,一个园环,球,平面. 2:园环直接面向光源,园环对球体来说是一个光线的阻挡物,园环在它上面形成阴影,同时,园环和球体对平面来说是光线的阻挡物 ...
- Qt的action控件中采用默认绑定,没有connect显示绑定!!!
使用qt创建界面时,可以选用代码设计也可以选用qt design来设计.最近看我同事的代码,以前写action都是使用connect链接槽函数的, 网上大多数人都是这样,然后我就纳闷,怎么没有conn ...
- php输出textarea数据(入库没有处理的)
str_replace("\r\n","<br />",$xmactivity['xmdetail']) 导出excel换行方法 str_repla ...
- matlab 画二维图与三维图
二维图 ezplot('sin(x)');%默认范围 ezplot('sin(x)',[-4 4]);%自己设定范围 三维图 ezmesh('x*x+y*y');%默认范围
- 微信小程序实现滚动分页加载更多
参考网址:https://www.cnblogs.com/Smiled/p/8203306.html 1.wxml: <view class='myScroll' style='float:le ...
- java工程师基础笔试题(一)
一.选择和填空 (不定项哦!) 1,如下是一份文件名为Test2.java的源文件,请问,编译该文件之后会生成几份字节码文件 class Test{ class Inner{} static cla ...
- Android Studio 统计行数
开发中常常会想看看自己累积在这个项目中写了多少代码了,以下就是在Android Studio查看统计项目代码总行数的方法. 打开Android Studio,按快捷键Ctrl+Shift+A 输入fi ...
- target=_blank攻击
[target=_blank攻击] 在<a>标签中加入 rel="noopener noreferrer" 来避免. 参考:https://mathiasbynens. ...