第六次课堂作业

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

可以得到:

按引用传递与按值传送数组类型方法参数的最大关键在于:使用前者时,如果方法中有代码更改了数组元素的值,实际上是直接修改了原始的数组元素。使用后者则没有这个问题,方法体中修改的仅是原始数组元素的一个拷贝

二:

阅读QiPan.java示例程序了解如何利用二维数组和循环语句绘制五子棋盘。

代码:

import java.io.*;

public class QiPan
{
//定义一个二维数组来充当棋盘
private String[][] board;
//定义棋盘的大小
private static int BOARD_SIZE = 15;
public void initBoard()
{
//初始化棋盘数组
board = new String[BOARD_SIZE][BOARD_SIZE];
//把每个元素赋为"╋",用于在控制台画出棋盘
for (int i = 0 ; i < BOARD_SIZE ; i++)
{
for ( int j = 0 ; j < BOARD_SIZE ; j++)
{
board[i][j] = "╋";
}
}
}
//在控制台输出棋盘的方法
public void printBoard()
{
//打印每个数组元素
for (int i = 0 ; i < BOARD_SIZE ; i++)
{
for ( int j = 0 ; j < BOARD_SIZE ; j++)
{
//打印数组元素后不换行
System.out.print(board[i][j]);
}
//每打印完一行数组元素后输出一个换行符
System.out.print("\n");
}
}
public static void main(String[] args)throws Exception
{
QiPan gb = new QiPan();
gb.initBoard();
gb.printBoard();
//这是用于获取键盘输入的方法
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr = null;
System.out.println("请输入您下棋的座标,应以x,y的格式:");
//br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br读取到。
while ((inputStr = br.readLine()) != null)
{
//将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串
String[] posStrArr = inputStr.split(",");
//将2个字符串转换成用户下棋的座标
int xPos = Integer.parseInt(posStrArr[0]);
int yPos = Integer.parseInt(posStrArr[1]);
//把对应的数组元素赋为"●"。
gb.board[xPos - 1][yPos - 1] = "●";
/*
电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。
还涉及
1.座标的有效性,只能是数字,不能超出棋盘范围
2.如果下的棋的点,不能重复下棋。
3.每次下棋后,需要扫描谁赢了
*/
gb.printBoard();
System.out.println("请输入您下棋的座标,应以x,y的格式:");
}
}
}

截图:

三:请编写一个程序将一个整数转换为汉字读法字符串。比如“1123”转换为“一千一百二十三”。 更进一步,能否将数字表示的金额改为“汉字表达? 比如将“¥123.52”转换为“壹佰贰拾叁元伍角贰分”。

代码:

import java.util.Scanner;
public class Zhuanhuan
{
private String[] hanArr = {"零" , "一" , "二" , "三" , "四" ,
"五" , "六" , "七" , "八" , "九"};
private String[] unitArr = {"十" , "百" , "千","万","十万","百万"};

/**
* 把一个四位的数字字符串变成汉字字符串
* @param numStr 需要被转换的四位的数字字符串
* @return 四位的数字字符串被转换成的汉字字符串。
*/
private String toHanStr(String numStr)
{
String result = "";
int numLen = numStr.length();
//依次遍历数字字符串的每一位数字
for (int i = 0 ; i < numLen ; i++ )
{
//把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
//因此把char型数字减去48得到int型数字,例如‘4‘被转换成4。
int num = numStr.charAt(i) - 48;
//如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
if ( i != numLen - 1 && num != 0)
{
result += hanArr[num] + unitArr[numLen - 2 - i];
}
//否则不要添加单位
else
{

//上一个数是否为“零”,不为“零”时就添加
if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)==‘零‘)
continue;
result += hanArr[num];
}
}
//只有个位数,直接返回
if(result.length()==1)
return result;

int index=result.length()-1;
while(result.charAt(index)==‘零‘){
index--;
}
if(index!=result.length()-1)
return result.substring(0,index+1);
else {
return result;
}
}

public static void main(String[] args)
{
Zhuanhuan nr = new Zhuanhuan();
Scanner in=new Scanner(System.in);
System.out.println("请输入整数:");
String num= in.next();
System.out.println("汉字读法为:"+nr.toHanStr(num));
}
}

截图:

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

思路:

使用random随机产生10个数,存入数组中使用for循环把结果存入一个String对象中使用for循环求出数组中所有元素的和使用JTextArea和JOptionPane输出数组的内容

流程图:

代码:

package 实验6;
import javax.swing.*;

public class InitArray {
public static void main( String args[] )
{
String output = "";
int num=0;

int n[] = new int[10];
for(int i=0;i<n.length;i++){
n[i]=(int)(Math.random()*100+1);
}

output += "Subscript\tValue\n";

for ( int i = 0; i < n.length; i++ ){
output += i + "\t" + n[ i ] + "\n";
num+=n[i];
}

JTextArea outputArea = new JTextArea( 11, 10 );
outputArea.setText( output );

JOptionPane.showMessageDialog( null, outputArea,
"Initializing an Array with a Declaration",
JOptionPane.INFORMATION_MESSAGE );
JOptionPane.showMessageDialog(null,num,"数组中所有元素的和:",
JOptionPane.INFORMATION_MESSAGE);

System.exit( 0 );
}
}

截图:

时间: 2024-10-07 07:13:17

第六次课堂作业的相关文章

20155227 第十六周课堂测试

20155227 第十六周课堂测试 在作业本上完成附图作业,要认真看题目要求. 提交作业截图 作弊本学期成绩清零(有雷同的,不管是给别人传答案,还是找别人要答案都清零) 提取hour时,采用的方法是先将hour右移11位,hour有5位,所以再与000000000000011111,即0X1F相与. (课上做的时候心里想的是0X1F,写下来就成了0XF了--) #define Time_Addr 0XFFFFC0000 #define TIME *(volatile int*) (Time+2)

20155318 第十六周课堂实践——嵌入式基础

20155318 第十六周课堂实践加分作业 测试中错误部分的理解和学习 根据下图,完成对时分秒的提取和设置 课上提交的答案: 错误原因:没有注意时间变量和地址问题,应在修改为: #define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000 #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中 int getHours() { int time=TIME; return (tim

软件工程概论课堂作业3

题目:返回一个整数数组中最大子数组的和 要求: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 设计思想: 用户自定义数组长度并依次输入数组元素,设一个全局变量初始化为零的数组a[N],N=10000: 1.因为该数组首尾相接可视作一个环,那么我们需要在一个合适的位置断开,把数组元素展成一条笔直的带子. (1).设用户自定义数组长度为m,输入数组各元素值a[1

2016福州大学软件工程第五、六次团队作业-Alpha阶段成绩汇总

1.本次作业成绩统计结果: 本次Alpha阶段团队作业公布如下: 表格说明: PE:贡献百分比 YS:演示评分(满分15分) BK:博客评分(满分15分) SH:事后诸葛亮环节(满分5分) P:个人分数 个人分数=0.7*团队分数+0.3*贡献比*团队分数*团队人数 学号 组别 PE YS BK SH 个人分数 031402606 606notconnected 16.00 13.50 14.00 4.00 31.122 031402631 18.00 13.50 14.00 4.00 32.2

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

课堂作业及 动手动脑问题整理

课堂作业一 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 程序: package com; public class Duixiang { public static void main(String[] args){ duixiang a=new duixiang(); a.out(); duixiang b=new duixiang(); b.out(); } } class duixiang{ stati

课堂作业数组最大和

题目: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选).源代码.结果截图.总结. 设计思想: 1.设计思想: 首先设置两个变量,分别用来存储数组长度也就是number和结果result:然后再通过语句来询问用户需要的数组长度再设个动态数组用来让用户输入数组中的数字,将每一个数值都存放进数组对应位

20172321 第六周课堂实践修改报告

20172321 第六周课堂实践修改报告 20172321 第六周课堂实践修改报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 吴恒佚 学号: 20172321 实验教师:王志强 测试日期:2018年10月19日 必修/选修: 必修 题目要求 错误题目及原因 错题1:二分查找 原因:这次二分查找的元素个数为偶数个,我的理解有点问题,所以把数字10查找了4次 错题2:散列查找 原因:对元素21的位置判断错误 题目分析及错题修改 二分查找 从有序列表的中间元素开始查找,如果中间元素不是

课堂作业3-描绘淘宝网六个常见属性场景

一.可用性 刺激源 用户将商品加入购物车 刺激 点击添加按钮后无反应 环境 正常操作 制品 进程 响应 在修复前或者刷新前不可用 响应度量 修复时间30分钟内 二.可修改性 刺激源 工作人员 刺激 随节日修改界面主题 环境 开发 制品 代码 响应 修改没有影响功能 响应度量 修改后立即可以生效 三.性能 刺激源 用户 刺激 提交订单 环境 正常 制品 处理器 响应 提示下单成功 响应度量 五秒内完成提交 四.安全性 刺激源 淘宝店主 刺激 试图修改客户的评价 环境 正常 制品 数据库 响应 拒绝