一月二十二日星期四

数组找重复算法demo.

从吃完晚饭折腾到晚上.还在完善中...

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class FindNumber {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        List<Integer> arraylist1 = new ArrayList<Integer>();
        List<Integer> arraylist2 = new ArrayList<Integer>();
        List<Integer> replacedindexlist = new ArrayList<Integer>();
        int arraylength = 0;
        int repeatednumber = 0;
        // Scanner sc = new Scanner(System.in);
        // n = sc.nextInt();
        // 输入异常改进
        // 这里一定要将控制状态标志的Scanner对象放入while循环内.否则第一次输入异常后进入死循环!
        boolean flags1 = false;
        while (!flags1) {
            System.out.println("请输入数组元素个数:");
            Scanner sc1 = new Scanner(System.in);
            boolean flagsn = sc1.hasNextInt();
            if (flagsn) {
                arraylength = sc1.nextInt();
                boolean flagsm = false;
                flagsm: while (!flagsm) {
                    System.out.println("请输入重复数字个数:");
                    Scanner sc2 = new Scanner(System.in);
                    flagsm = sc2.hasNextInt();
                    if (flagsm) {
                        repeatednumber = sc2.nextInt();
                        if(repeatednumber<=arraylength){
                            flags1 = true;
                        }else{
                            System.out.println("重复数字个数不得大于数组长度!");
                            break flagsm;
                        }
                    } else {
                        System.out.println("输入整数!");
                    }
                }
            } else {
                System.out.println("输入整数!");
            }
        }
        int arraylengthcount = 0;
        while (arraylengthcount < arraylength) {
            Integer randomnumber = (int) (Math.random() * arraylength + 1);
            if (!arraylist1.contains(randomnumber)) {
                arraylist1.add(randomnumber);
                arraylengthcount++;
            }
        }
        System.out.println("生成的数组:" + Arrays.toString(arraylist1.toArray()));
        int repeatednumbercount = 0;
        while (repeatednumbercount < repeatednumber) {
            // arraylist1.set(replacedindex,repeatednumber);
            // n较小时可能没有重复的数字,改进
            int randomnumber = (int) (Math.random() * arraylength + 1);
            int replacedindex = (int) (Math.random() * arraylength);
            if (!replacedindexlist.contains(replacedindex)) {
                replacedindexlist.add(replacedindex);
                arraylist1.set(replacedindex, randomnumber);
                repeatednumbercount++;
            }
        }
        // System.out.println("数组列表长度:"+arraylist.size());
        for (int i : arraylist1) {
            if (!arraylist2.contains(i)) {
                arraylist2.add(i);
            } else {
                System.out.println("找到你啦哈哈:" + i);
            }
        }
//        System.out.println("数组列表1长度:" + arraylist1.size());
        System.out.println("含有重复元素的数组:" + Arrays.toString(arraylist1.toArray()));
//        System.out.println("数组列表2长度:" + arraylist2.size());
//        System.out.println("数组列表2:" + Arrays.toString(arraylist2.toArray()));
    }
}
时间: 2024-10-23 11:37:58

一月二十二日星期四的相关文章

一月十五日星期四

看了一下午corejava来巩固基础概念,加深理解.拿笔在上面画画感觉效果不好.明天尝试将遇到的问题或者一些有些陌生的术语或者概念记录下来,再用专门的时间来解决读书遇到的问题.看书时敲的TESTDEMO零零碎碎的没有保存,附上一个重写和重载的代码以及一些笔记.   方法重写,方法重载overloading概念:     方法重写(覆盖)是指方法继承时,子类中相同的方法名和参数列表但是方法不同,与返回值无关     方法重写可以让子类改写父类中同样的方法,其要求访问权限不能低于父类,方法修饰符要与

父母之颂

自传44.在佳木斯市委党校十二1----父母之颂 一九九六年九月我在佳木斯市委党校经济学教研室工作十二学年.钰香妻在市委党校教务处评为校先进工作者小女儿还在商店上班. 儿子在市建行工作儿媳在市农行工作小孙女两岁半在幼儿园托养.大女儿在第五中学任语文教师和班主任工作一帆风顺并成绩优先. 九月三日我讲市场经济与股份经济30学时汤原县委组织部班5天.九月十日是教师节我们全体教师到郊区四丰山野游照像赏水爬山.九月十六日我讲社会主义市场经济体制8学时县处班机关班中青班.九月十九日后我讲市场经济学和股份经济

校园山庄

自传70.在张家界学院工作三1--畅游三峡 二零零五年九月初我在张家界学院经济系的工作开始了第三学期. 钰香妻在市委党校招生办小女儿在农垦中学女婿在教辅书店上班. 大女儿在第五中学任语文高级教师女婿在发电厂工作一切都很好.儿子在大连轻工学院儿媳在大连建设银行工作小孙女上小学六年. 本期讲财政与金融144学时星期二四政治经济学72学时星期三五: 星期二三四节2207教室04工管营销五六节1117教室04经济一二班. 星期四一二节2102教室04工管营销三四节2109教室04经济一二班. 星期三五六

佳市党校

自传30.在佳木斯市委党校一----优秀教师 一九八五年九月我在佳木斯市委党校经济学教研室工作第一学年.珍香在交通局医院当会计工作顺利心情很好工资福利待遇较一般.儿子在七中上高中二年级当班长与班主任老师关系密切成为好友.女儿在五中上初中二年级当课代表学习成绩排前列深得老师喜欢. 上学期我课哲学80学时商业班国民经济管理概论450学时党政班.计划经济概论120学时电大统计班政治经济学60学时省校函授班.本学期开始将地市合并初我的教研室负责人职务正式定为副主任.九月十日第一个教师节我荣获省市优秀教师

C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)

//今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateString(); //明天,同理,加一 DateTime.Now.AddDays(1).ToShortDateString(); //本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那一天,要注意的是这里的每一周是从周日始至周六止 DateTime.Now.AddDays(C

java获取当前日期的前一天,前一月和前一年

核心:使用Calendar的add(int field, int amount)方法 Calendar ca = Calendar.getInstance();//得到一个Calendar的实例 ca.setTime(new Date()); //设置时间为当前时间 ca.add(Calendar.YEAR, -1); //年份减1 Date lastMonth = ca.getTime(); //结果 //求前一月ca.add(Calendar.MONTH, -1), //前一天ca.add(

mysql查询今天、昨天、7天、近30天、本月、上一月 数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 近30天 SELECT * FROM 表名 where DATE_SUB(CURDATE()

《那一天,那一月,那一年,那一世》-------仓央嘉措

那一天, 我闭目在经殿的香雾中, 蓦然听见你颂经中的真言: 那一月, 我摇动所有的经筒, 不为超度, 只为触摸你的指尖: 那一年, 磕长头匍匐在山路, 不为觐见, 只为贴着你的温暖: 那一世, 转山转水转佛塔, 不为修来世, 只为途中与你相见. 那一月, 我轻转过所有经筒, 不为超度,    只为触摸你的指纹: 那一年,    我磕长头拥抱尘埃, 不为朝佛,    只为贴着你的温暖: 那一世,    我翻遍十万大山, 不为修来世,    只为路中能与你相遇: 只是,    就在那一夜,    我

C# DateTime 日期加1天 减一天 加一月 减一月 等方法

http://www.cnblogs.com/dekevin/p/4551843.html //今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateString(); //明天,同理,加一 DateTime.Now.AddDays(1).ToShortDateString(); //本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那