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

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

System.out.println("a数组中的元素:");

// 循环输出a数组的元素

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

System.out.print(a[i] + ",");

}

// 定义并初始化数组b,使用动态初始化

int[] b = new int[4];

// 输出b数组的长度

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

// 因为a是int[]类型,b也是int[]类型,所以可以将a的值赋给b。

// 也就是让b引用指向a引用指向的数组

b = a;                                              //a把地址指向b,a,b指向同一个地址

System.out.println("b=a,赋值之后,b数组的元素为:");

// 循环输出b数组的元素

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

System.out.print(b[i] + ",");

}

// 再次输出b数组的长度

System.out.println("\n赋值之后,b数组的长度为:" + b.length);

原因:a把地址指向b,a,b指向同一个地址。

2.

//Testarrays

//YiMingLai 2016.11.6

import java.util.*;

public class TestArrays

{

public static void main(String[] args)

{

//定义一个a数组

int[] a = new int[]{3, 4 , 5, 6};

//定义一个a2数组

int[] a2 = new int[]{3, 4 , 5, 6};

//a数组和a2数组的长度相等,每个元素依次相等,将输出true

System.out.println("a数组和a2数组是否相等:" + Arrays.equals(a , a2));

//通过复制a数组,生成一个新的b数组

int[] b = Arrays.copyOf(a, 6);

System.out.println("a数组和b数组是否相等:" + Arrays.equals(a , b));

//输出b数组的元素,将输出[3, 4, 5, 6, 0, 0]

System.out.println("b数组的元素为:" + Arrays.toString(b));

//将b数组的第3个元素(包括)到第5个元素(不包括)赋为1

Arrays.fill(b , 2, 4 , 1);

//输出b数组的元素,将输出[3, 4, 1, 1, 0, 0]

System.out.println("b数组的元素为:" + Arrays.toString(b));

//对b数组进行排序

Arrays.sort(b);

//输出b数组的元素,将输出[0, 0, 1, 1, 3, 4]

System.out.println("b数组的元素为:" + Arrays.toString(b));

}

}

3阅读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的格式:");

}

}

}

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

更进一步,能否将数字表示的金额改为“汉字表达? 比如将“¥123.52”转换为“壹佰贰拾叁元伍角贰分”。

import java.util.Scanner;

public class zhuanhuan2 {

public void convert(int number) {

//数字对应的汉字

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

//单位

String[] unit = {"","十","百","千","万","十","百","千","亿","十","百","千","万亿"};

//将输入数字转换为字符串

String result = String.valueOf(number);

//将该字符串分割为数组存放

char[] ch = result.toCharArray();

//结果 字符串

String str = "";

int length = ch.length;

for (int i = 0; i < length; i++) {

int c = (int)ch[i]-48;

if(c != 0) {

str += num[c]+unit[length-i-1];

} else {

str += num[c];

}

}

System.out.println(str);

}

@SuppressWarnings("resource")

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

while(true) {

System.out.println("请输入要进行转换的数字......");

String str = scanner.next();

if("-1".equals(str))

return;

new zhuanhuan2().convert(Integer.parseInt(str));

}

}

}

import java.util.Scanner;

public class zhuanhuan3 {

private static final String UNIT[] = { "万", "千", "佰", "拾", "亿", "千", "佰",

"拾", "万", "千", "佰", "拾", "元", "角", "分" };

private static final String NUM[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆",

"柒", "捌", "玖" };

private static final double MAX_VALUE = 9999999999999.99D;

/**

* 将金额小数转换成中文大写金额

* @param money

* @return result

*/

public static String convertMoney(double money) {

if (money < 0 || money > MAX_VALUE)

return "参数非法!";

long money1 = Math.round(money * 100); // 四舍五入到分

if (money1 == 0)

return "零元整";

String strMoney = String.valueOf(money1);

int numIndex = 0; // numIndex用于选择金额数值

int unitIndex = UNIT.length - strMoney.length(); // unitIndex用于选择金额单位

boolean isZero = false; // 用于判断当前为是否为零

String result = "";

for (; numIndex < strMoney.length(); numIndex++, unitIndex++) {

char num = strMoney.charAt(numIndex);

if (num == '0') {

isZero = true;

if (UNIT[unitIndex] == "亿" || UNIT[unitIndex] == "万"

|| UNIT[unitIndex] == "元") { // 如果当前位是亿、万、元,且数值为零

result = result + UNIT[unitIndex]; //补单位亿、万、元

isZero = false;

}

}else {

if (isZero) {

result = result + "零";

isZero = false;

}

result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex];

}

}

//不是角分结尾就加"整"字

if (!result.endsWith("角")&&!result.endsWith("分")) {

result = result + "整";

}

//例如没有这行代码,数值"400000001101.2",输出就是"肆千亿万壹千壹佰零壹元贰角"

result = result.replaceAll("亿万", "亿");

return result;

}

public static void main(String[] args) {

Scanner in=new Scanner (System.in);

System.out.println("请输入一个金额");

double a = in.nextDouble();

System.out.println("您输入的金额(小写)为:" + a);

System.out.println("您输入的金额(大写)为:" + convertMoney(a));

}

}

5.前面几讲介绍过JDK所提供的BigInteger能完成大数计算,如果不用它,直接使用数组表达大数,你能实现相同的功能吗?

要求:

(1)用你的大数类实现加和减两个功能

//大数

// YiMingLai 2016/11/6

package ming;

import java.util.Scanner;

public class Dashu {

void he(int a[],int b[])

{

int c[]=new int[5];

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

{

c[i]=a[i]+b[i];

}

int num=10000*c[0]+1000*c[1]+100*c[2]+10*c[3]+c[4];

System.out.print("两数的和是:"+num);

}

void cha(int a[],int b[])

{

int c[]=new int[5];

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

{

c[i]=a[i]-b[i];

}

int chaa=10000*c[0]+1000*c[1]+100*c[2]+10*c[3]+c[4];

System.out.print("两数的差是:"+chaa);

}

public static void main(String[] args) {

Scanner scanner=new Scanner(System.in);

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

System.out.println("第一个数(从最高位开始(万位))");

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

{

System.out.println("请输入第"+t[i]+"个位置上的数字");

a[i]=scanner.nextInt();

}

System.out.println("第二个数(从最高位开始(万位)");

int b[]=new int[5];

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

{

System.out.println("请输入第"+t[i]+"个位置上的数字");

b[i]=scanner.nextInt();

}

Dashu D=new Dashu();

D.he(a,b);

D.cha(a,b);

}

}

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

要求将设计思路、程序流程图、源程序代码、结果截图、编程总结等发表到博客园,并备份到课堂派

设计思路:先不考虑消息框形式输出,先定义随机数的生成,然后定义一个数组,用来存储生成的10个随机数;然后再调用消息框进行数和和的输出

源代码:

//随机生成10个数,存放到数组中,并求和

//YiMingLai 2016.11.6

// import class JOptionPane

import javax.swing.JOptionPane;

import java.util.Random;

public class suijishu{

public static void main(String[] args) {

int numOfArray=10;//数组大小

int[] intArray=new int[numOfArray];

int num=100;//生成的整数在0-99之间,包括0和99

int sum=0;//总和

Random ran=new Random();

int randomNum=0;//每次产生的随机数

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

randomNum=ran.nextInt(num);

intArray[i]=randomNum;

sum+=randomNum;

JOptionPane.showMessageDialog( null, "The shu is " + randomNum, "Results",JOptionPane.PLAIN_MESSAGE );

}

JOptionPane.showMessageDialog( null, "The he is " + sum, "Results",JOptionPane.PLAIN_MESSAGE );

}

}

总结:要知道怎样把生成的随机数存放到数组中,然后调用消息框进行输出。

java动手动脑和课后实验型问题的更多相关文章

  1. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

  2. java动手动脑和课后实验型问题第四讲

    1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Mult ...

  3. 2019-9-16 java上课知识整理总结(动手动脑,课后实验)

    java上课知识整理总结(动手动脑,课后实验) 一,课堂测试 1,题目:课堂测试:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求:(1)题目避免重复: (2)可定制( ...

  4. java课堂动手动脑及课后实验总结

      动手动脑一:枚举   输出结果: false false true SMALL MEDIUM LARGE 分析和总结用法 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本 ...

  5. 动手动脑(&课后实验):类和对象

    1. 以下代码为何无法通过编译?哪儿出错了? 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法.而此时程序中已提供了一个有一个参数的构造函数,而定义对象时却没有参数,所以程序会报错. ...

  6. 动手动脑(&课后实验):生成随机数,函数的重载

    一.编写一个方法,使用纯随机数生成算法生成指定数目(比如1000个)的随机整数. 1.程序源代码 import java.util.Scanner; import java.util.Random; ...

  7. JAVA动手动脑及课后作业

    1.查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 运行结果 true true false 原因 1)在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0, ...

  8. Java动手动脑——多态和继承

    Java动手动脑——继承和多态 实验一 预估输出答案:100  200  201  202 输出结果:100  200  201  202 输出答案分析:100 创建parent类的对象,调用对象的方 ...

  9. JAVA 数组作业——动手动脑以及课后实验性问题

    JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...

随机推荐

  1. Android first---SQLite

    SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHelper 必须定义一个构造方法: public MyOpenHelper(Context context, ...

  2. 基于springMVC+angular+bootstrap+mysql的简易购物网站搭建

    https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja& ...

  3. CentOS搭建NodeJS环境

    事件驱动,承受高并发……这些耀眼的光环,使前端开发者不能不去学习NodeJS. 今天就在开发环境把NodeJS搭建起来了. 1. 下载node wget http://nodejs.org/dist/ ...

  4. 更改SQL Server 数据库的排序规则

    更改数据库的排序规则,SQL提示 5030 的错误,错误信息如下: The database could not be exclusively locked to perform the operat ...

  5. javascript高级编程3第三章:基本概念 本章内容 语法 数据类型 流控制语句 函数

    3.1 语法 ECMAScript的语法大量借鉴了C及其他类C语言的语法. 3.1.1 区分大小写 3.1.2 标识符 所谓标识符,就是值变量.函数.属性的名字,或者函数的参数.标识符可以是按照下列格 ...

  6. 【Hector slam】A Flexible and Scalable SLAM System with Full 3D Motion Estimation

    作者总结了SLAM前端和后端的区别 While SLAM frontends are used to estimate robot movement online in real-time, the ...

  7. Android6.0之来电转接号码显示修改

    Android6.0之来电转接号码显示修改 手机来电转接界面是在,点开Dialer-搜索框右边的三个点-设置-通话账户(要先插卡)-中国移动或者中国联通--来电转接--第一行,显示始终转接 将所有来电 ...

  8. apache与nginx的虚拟域名配置

    由于开发需求,项目有时候需要设置虚拟域名进行测试.下面是分别是apache和nginx的配置 一.apache 环境:wampserver2.5 1.修改host文件 C:\Windows\Syste ...

  9. Python正则式的基本用法

    Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...

  10. Linux启动盘-ultraiso

    感觉windos和linux安装系统的启动盘不一样 其实我也不太懂. windos的时候我是用老毛桃  然后安装linux我就选择了ultraios作为启动盘 一: 先在百度下载 ultraios 二 ...