java趣味编程100实例

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1_1

问题描述:根据福利彩票的规则,6个蓝色球,范围1--32,不允许重复,1个红色球,范围

1-16,自动生存6个蓝色球,1个红色球。

import java.util.Arrays;

import java.util.Random;

import java.util.Scanner;

public class Ch11_2

{

/**

* 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组

* @param begin 最小数字(包含该数)

* @param end 最大数字(不包含该数)

* @param size 指定产生随机数的个数

*

* 实现思路:首先定义一个方法,使它能够产生6个不重复的蓝色随机数,存放到数组中, * 再产生1个红色随机数,最后他们组合在一起就是题目所求

*/

public static int[] generateRandomNumber(int begin, int end, int size) {

// 加入逻辑判断,确保begin

if (begin >= end || (end - begin) < size)

{

return null;

}

// 种子你可以随意生成,但不能重复里面存放的是你的取值范围

//本题就是 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] int[] seed = new int[end - begin];

for (int i = begin; i < end; i ++)

{

seed[i - begin] = i;

}

int[] ranArr = new int[size];

Random ran = new Random();

// 数量你可以自己定义。这里生成了6个蓝色球的号码

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

{

// 得到一个位置

int j = ran.nextInt(seed.length - i);

// 得到那个位置的数值

ranArr[i] = seed[j];

// 将最后一个未用的数字放到这里,这样就把取出的数覆盖了,达到了不重复

的目的。

seed[j] = seed[seed.length - 1 - i];

}

return ranArr;

}

public static void main(String[] args)

{

i nt[] ranArr={};

i nt red;

S canner input=new Scanner(System.in);

R andom ran = new Random();

S ystem.out.println("欢迎使用双色球自动摇号系统");

S ystem.out.print("确实摇号(y/n)?");

S tring go;

g o=input.next();

w hile(go.equalsIgnoreCase("y"))

{

ranArr= generateRandomNumber(1,33,6);

red=ran.nextInt(16);

System.out.println(Arrays.toString(ranArr)+" "+red);

System.out.print("继续摇号(y/n)?");

go=input.next();

}

System.out.println("谢谢使用!");

}

}

1_2 超长整数的相加

问题描述:编写程序,实现超过整形变量存储范围数据的相加

import java.util.Arrays;

import java.util.Scanner;

public class Ch11_4

{

/**

* 实现思路:1 将两个超长的整形转换为字符串

* 2 将两个字符串变为等长,如:30812111123 298----30812111123 00000000289

* 3 将两个字符串对应相加,结果存到到另一个字符串

* 4 最后对新的字符串做进位处理

* @param args

*/

public static void main(String[] args)

{

// Scanner input=new Scanner(System.in);

// System.out.print("请输入第一个加数:");

// String addA=input.next();

// System.out.print("请输入第二个加数:");

// String addB=input.next();

String addA="30812111123";

String addB="298";

//调用方法计算结果,输出

System.out.println(addA+"+"+addB+"="+strvalue(addA,addB)); }

/**

*将两个字符串相加,得到新的字符串

*/

public static String strvalue(String addA,String addB)

{

String strvalue="";

int lenA=addA.length();

int lenB=addB.length();

int templen=0;

//调整长度相同

if(lenA>=lenB)

{

templen=lenA-lenB;

addB=maxlen(addB,templen);//调整长度,使其跟大数长度一致

}else{

templen=lenB-lenA;

addA=maxlen(addA,templen);

}

char addcharA[]=addA.toCharArray();

char addcharB[]=addB.toCharArray();

int len=addcharA.length;

int valueC[]=new int[len];

for(int i=0;i

{

相关文档
最新文档