Java数组六

1.了解如何利用二维数组和循环语句绘制五子棋盘

答:  定义一个二维数组来充当棋盘,定义棋盘大小,初始化棋盘数组,利用for循环使每一个元素赋为“+”,然后输出每个数组元素,每打印完一行后在进行换行。

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

}

}

}

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

    public class Test {

public static void test(int d) {

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

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

String s = String.valueOf(d);

System.out.println(s);

StringBuffer sb = new StringBuffer();

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

String index = String.valueOf(s.charAt(i));

sb = sb.append(str[Integer.parseInt(index)]);

}

String sss = String.valueOf(sb);

int i = 0;

for (int j = sss.length(); j > 0; j--) {

sb = sb.insert(j, ss[i++]);

}

System.out.println(sb);

}

public static void main(String[] args) {

test(1123);

test(912321321);

}

}

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

public class MoneyConvert {

private final String[] str1 = {"元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿"};

private final String[] str2 = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};

private final String[] str3 = {"角", "分"};

public static void main(String[] args)

{

double n = 1234506.789;

MoneyConvert mc = new MoneyConvert();

String str = mc.convert(n);

System.out.println(str);

}

public String convert(double n)

{

String str = String.valueOf(n);

String temp1 = str.substring(0, str.indexOf("."));

String temp2 = str.substring(str.indexOf(".")+1);

int k = -1;

int len = -1;

StringBuffer sb = new StringBuffer();

len = temp1.length()-1;

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

{

k = Integer.parseInt(temp1.substring(i, i+1));

sb.append(str2[k]).append(str1[len-i]);

}

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

{

k = Integer.parseInt(temp2.substring(i, i+1));

sb.append(str2[k]).append(str3[i]);

}

4.不用BigInteger,直接使用数组表达大数,能实现相同的功能吗?

要求:

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

package Work;

import java.util.Scanner;

public class BigNum {

public static void main(String[] args) {

// TODO Auto-generated method stub

int aa,bb;

System.out.println("用数组实现大数的加法和减法");

System.out.print("请输入大数a:");

Scanner scan=new Scanner(System.in);

String a=scan.next();

System.out.print("请输入大数b:");

String b=scan.next();

int A[]=new int[100];

int B[]=new int[100];

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

A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1));

}

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

B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1));

}

int sum=0;

int sub=0;

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

sum+=A[i]+B[i];

sub+=A[i]-B[i];

}

System.out.print("a+b="+sum);

System.out.println();

System.out.print("a-b="+sub);

}

}

(2)阅读BigInteger类源码,弄清楚它是使用什么算法实现加减乘除四种运算的?

本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。BigInteger是不可变的任意精度的整数。所有操作中,都以二进制补码形式表示BigInteger(如Java的基

(3)通过互联网查找大数运算的相关资料,给你的大数类添加乘、除、求阶乘等其它功能。

package Work;

import java.util.Scanner;import java.math.BigDecimal;

public class BigNum {

public static void main(String[] args) {

// TODO Auto-generated method stub

int aa,bb;

System.out.println("用数组实现大数的加法和减法");

System.out.print("请输入大数a:");

Scanner scan=new Scanner(System.in);

String a=scan.next();

System.out.print("请输入大数b:");

String b=scan.next();

int A[]=new int[100];

int B[]=new int[100];

//用于复杂的乘法和除法

BigDecimal b1 = new BigDecimal(a) ;

BigDecimal b2 = new BigDecimal(b) ;

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

A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1));

}

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

B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1));

}

int sum=0;

int sub=0;

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

sum+=A[i]+B[i];

sub+=A[i]-B[i];

}

System.out.print("a+b="+sum);

System.out.println();

System.out.print("a-b="+sub);

System.out.println();

System.out.print("a*b="+b1.multiply(b2));

System.out.println();

System.out.print("a/b="+b1.divideToIntegralValue(b2));

}

}

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

(1)设计思想

    通过for循环对数组内每一个数通过随机函数赋值,然后利用output按格式连接输出,编写方法实现数组内数据加和,然后用消息弹框形式输出。

(2)程序流程图

  

   

(3)代码

import javax.swing.JOptionPane;

import javax.swing.JTextArea;

public class RandomAdd {

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] a = new int[10];

String output = "";

output += "Subscript\tValue\n";

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

{

a[i] = 1+(int)(Math.random()*100);

output += i + "\t" + a[ i ] + "\n";

}

int result = 0;

String output2 = "";

result  = whatIsThis(a, a.length);

output2 += "数组元素和为" + result;

JTextArea outputArea = new JTextArea( 11, 10 );

outputArea.setText( output );

JOptionPane.showMessageDialog( null, outputArea,

"Random Array",

JOptionPane.INFORMATION_MESSAGE );

JOptionPane.showMessageDialog( null, output2,

"Add",

JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );

}

public static int whatIsThis(int b[], int size) {

if (size == 1)

return b[0];

else

return b[size - 1] + whatIsThis(b, size - 1);

}

}

(4)运行结果

   

(5)编程总结

     了解了一些JTexArea的用法,学会了如何实现字符串的分列输出

时间: 2024-10-06 16:51:03

Java数组六的相关文章

【JAVA】六 JAVA Map 一 HashMap

[JAVA]六 JAVA Map 一 HashMap JDK API java.util Interface Map Type Parameters: K - the type of keys maintained by this map V - the type of mapped values All Known Subinterfaces: Bindings, ConcurrentMap<K,V>, ConcurrentNavigableMap<K,V>, LogicalMe

Java - 数组解析

java提高篇(十八)-----数组之一:认识JAVA数组 一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的! 但是这只是数组的最表面的东西!深一点?就是这样:数组是一个简单的复合数据类型,它是一系列有序数据的集合,它当中的每一个数据都具有相同的数据类型,我们通过数组名加上一个不会越界下标值来唯一确定数组中的元素. 还有更深的,那就是数组是一个特殊的对象!!(对于这个LZ理解的不是很好,对JVM

Java千问:七个问题帮助初学者深入理解Java数组

几乎所有的高级语言当中,都提供了一种叫做"数组"的东西,Java语言当然也不例外.我们通过数组可以很方便的存储和管理一组数据.因为在Java语言当中使用数组非常的方便,所以导致很多初学者忽略了对数组的深入学习,本文就通过七个问题,来帮助初学者深入理解一下Java语言的数组到底是怎么回事. 一.数组是变量的简单叠加吗? 我们在学习Java的时候,知道一个int类型的变量可以存储一个整数,而一个int类想的数组可以存储多个整数.于是很多人认为数组只不过是变量的简单叠加而已,无非是变量存1个

Java 数组学习笔记

数组的简单认识 简单理解java数组,就是可以创建并组装它们,通过使用整型索引值访问它们的元素,并且它们的尺寸不能改变,这里的它们就是数组. 数组的特殊性 在java中有很多方式去持有对象,那么数组的与众不同点在哪里? 数组与其他种类的容器区别有三个方面:效率.类型和保存基本类型的能力. 在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式.数组就是一个简单的线性序列,这使得元素访问非常迅速.但是为之付出的代价就是数组对象的大小被固定,并且在其生命周期中不可改变. 在泛型之前,其他

Java数组与内存控制

一.Java数组初始化 Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值.(文章来源于李刚老师的<突破java程序员的16课>) 1:基本类型数组的两种初始化方式 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度. 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值. 不要同时使用静态初始化和动态初始化,也就是

JAVA数组的定义及用法

数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素. 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; 当中类型(type)能够为Java中随意的数据类型,包含简单类型组合类型,数组名arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量. 另外一种形式对C++开发人员可能认为非常奇怪,只是对JAVA或C#这种开发语言来说,另外一种形式可能更直观,由于这里定义的仅仅是个变量而已,系统

java 数组比较,元素的比较,Comparable,Comparator比较的应用实现,排序,查找示例

java 数组比较,元素的比较,自定义Comparator的实现,排序,查找示例 package org.rui.array.compar; import java.util.Arrays; import java.util.Random; import org.rui.generics.anonymity.Generator; /** * 程序设计的基本目标是"将保持不变的事物与会发生改变的事物相分离" * 而这是,不变的是通用的排序算法,变化的是各种对象相互比较的方式, * 因此,

Java 数组工具类排序,最大值最小值等

public class ArrayUtils{ /** * 返回数组最大值 * * @param a * @return */ public static int max(int[] a){ // 返回数组最大值 int x; int aa[]=new int[a.length]; System.arraycopy(a,0,aa,0,a.length); x=aa[0]; for(int i=1;i<aa.length;i++){ if(aa[i]>x){ x=aa[i]; } } retu

java 数组声明

Java 数组声明常用的方式 1.类型  数组名称[] = new 数组类型[个数] 2,类型  数组名称    =  new 数组类型[] {} 3,类型[] 数组名称 = {} //类型 数组名[] = new 数组类型 [个数] int $arr[] = new int [4]; $arr[0] = 1; $arr[1] = 2; $arr[2] = 3; $arr[3] = 4; //类型 数组名称 = new 数组类型[]{} int $arr1[] = new int[]{1,2,3