产生随机数输出以及写入文件

    xiaoxiao2021-03-25  88

    package com.qidai; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.Scanner; /**  * 接收用户从控制台输入的一个区间,在该区间范围内(包含左右边界),  * 随机生成20个不重复的数字(若用户输入该区间范围小于20,则提示用户重新给定区间):  * a.统计出所有的偶数,输出到控制台;  * b.将剩下的数字按照降序排序后存放到当前项目下,命名为number.txt,  * 每个数用“-” 隔开; 比如:13-1-5-27-23  */ public class Test7 { public static void main(String[] args) { Test7 t = new Test7(); int i[] = t.print();//提示用户输入 int[] array = t.inIt(i[0],i[1]);//随机生成20个不重复的数字 //统计所有的偶数 ArrayList<Integer> list = new ArrayList<Integer>();//保存剩下的数字 System.out.println("偶数有:"); String str = ""; for(int j:array){ if(j%2==0){ str+=j+","; }else{ list.add(j); } } System.out.println(str.substring(0,str.length()-1)); //升序排列 Collections.sort(list); //打印list for (Integer integer : list) { System.out.println(integer); } //写入文件 if(t.writeFile(list)){ System.out.println("写入成功"); }else { System.out.println("写入失败,请检查文件路径"); } } /** *  b.将剩下的数字按照降序排序后存放到当前项目下, *  命名为number.txt,每个数用“-” 隔开; 比如:13-1-5-27-23 */ public boolean writeFile(List list){ try { File file = new File(".\\number.txt"); FileWriter fw = new FileWriter(file); //因为是正序排列  所以要倒着写 String str = ""; for(int i = list.size()-1;i>=0;i--){ str+=list.get(i)+"-"; } str = str.substring(0, str.length()-1); fw.write(str); fw.close(); return true; } catch (IOException e) { e.printStackTrace(); return false; } } /** * 提示用户输入 */ public int[] print(){ System.out.println("请输入范围大于20的区间,比如“10-35”"); int ace[] = new int [2]; while(true){ Scanner sc = new Scanner(System.in); String str=sc.next(); String[] strs  = str.split("-"); int i = Integer.parseInt(strs[0]); int j =  Integer.parseInt(strs[1]); if(j-i<20){ System.out.println("请输入大于20的区间"); continue; } ace[0] = i; ace[1] = j; break; } return ace; } /** * 随机生成20个不重复的数字 */ public int[] inIt(int i,int j){ int[] array = new int[20]; Random r = new Random(); int a = 0;//计算数组下标 boolean bool = false; while(true){ int b = r.nextInt(j-i+1)+i; //判断是否重复 for (int bbb : array) { if(bbb == b){ bool = true; break; } } if(bool){ bool = false; continue; } array[a++] = b; if(a ==20 ){ break; } } return array; } }
    转载请注明原文地址: https://ju.6miu.com/read-17262.html

    最新回复(0)