java趣味编程100实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 {