用Java判断7个手动输入的数字的重复与区间 该怎么编写? 前六个数字的
答案:3 悬赏:60 手机版
解决时间 2021-02-10 15:16
- 提问者网友:献世佛
- 2021-02-09 18:54
用Java判断7个手动输入的数字的重复与区间 该怎么编写? 前六个数字的区间是1-33 最后一个数字是1-16 如果重复 代码通知错误。
最佳答案
- 五星知识达人网友:鱼芗
- 2021-02-09 19:56
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>(7);
while (list.size() < 7) {
System.err.println(String.format("第%s个数字:", list.size() + 1));
try {
int i = Integer.valueOf(sc.next());
if (!list.contains(i)) {
if ((list.size() < 6 && i >= 1 && i <= 33) || (list.size() == 6 && i >= 1 && i <= 16))
list.add(i);
else
throw new Exception(String.format("数字不在区间%s内", list.size() < 6 ? "[1,33]" : "[1,16]"));
} else
throw new Exception("输入重复");
} catch (NumberFormatException e) {
System.err.println("请输入数字");
sc.reset();
} catch (Exception e) {
System.err.println(e.getMessage());
sc.reset();
}
}
System.out.println("结束");
}
Scanner sc = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>(7);
while (list.size() < 7) {
System.err.println(String.format("第%s个数字:", list.size() + 1));
try {
int i = Integer.valueOf(sc.next());
if (!list.contains(i)) {
if ((list.size() < 6 && i >= 1 && i <= 33) || (list.size() == 6 && i >= 1 && i <= 16))
list.add(i);
else
throw new Exception(String.format("数字不在区间%s内", list.size() < 6 ? "[1,33]" : "[1,16]"));
} else
throw new Exception("输入重复");
} catch (NumberFormatException e) {
System.err.println("请输入数字");
sc.reset();
} catch (Exception e) {
System.err.println(e.getMessage());
sc.reset();
}
}
System.out.println("结束");
}
全部回答
- 1楼网友:猎心人
- 2021-02-09 21:02
定一个数组a[34],并初始化为0,如果输入一个数就记为1,这样如果输入时该数已经为1就输出 重复输入。
再看看别人怎么说的。
- 2楼网友:罪歌
- 2021-02-09 20:08
public static void main(String[] args) {
int a[]=new int [6];
int b=(int)(Math.random()*15+1);
int[] balls = new int[35];//创建一个有35个长度的数组
for(int i=0;i<balls.length;i++){
balls[i] = i + 1; //循环放入1至35
}
boolean[] used = new boolean[balls.length];//创建一个boolean数组,用于记录是否重复
for(int i = 0;i<a.length;i++){//循环向a数组中放入元素
for(;;){
int index = (int)(Math.random()*35);//生成一个随机数,这里不再+1了,因为随机的是下标,+1会出现越界
if(used[index]==true){ //如果used中,index的位置为true,则表示已经被随机过了
continue;//如果已经被随机过,则重新循环生成随机数
}
a[i] = balls[index];//如果没有被随机过,则将index所对应位置的元素放入a数组中
used[index] = true;//同时将该index位置设置为true,表示已经被随机过了
break;//退出当前循环,继续下一次向a中添加元素
}
}
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
// for(int i=0;i<a.length;i++){
// System.out.println(a[i]);
// }//输出数组不需要这么麻烦
System.out.println(Arrays.toString(a));
System.out.println(+b);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯