抽取问题, 重点是 同一个学号不能重复被抽取.
站在用户的角度思考问题,与客户深入沟通,找到邹平网站设计与邹平网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名申请、网络空间、企业邮箱。业务覆盖邹平地区。
解决办法很多,
比如数组可以使用下标来标记,号码是否被使用,使用了就继续下一次抽取
也可以使用集合来抽取,把集合顺序打乱,然后随便抽几个就可以了
参考代码:数组法
import java.util.Random;
public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存储学号的数组
boolean[] flags=new boolean[stuNums];//标记,用于标记对应下标的学号是否已经被抽取过了
for (int i = 0; i stuNums; i++) {
nums[i]=i+1;//给学号赋值
}
Random r=new Random();
while(true){
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:"+nums[index]);
flags[index]=true; //标记已经被使用过了
break;
}
}
for (int i = 0; i 2; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已经被抽取过了 ,那么i建议,再次循环
}
}
for (int i = 0; i 3; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
import java.util.ArrayList;
import java.util.Collections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayListInteger list=new ArrayListInteger();
for (int i = 0; i stuNums; i++) {
list.add(i+1);
}
System.out.println("有序"+list);
Collections.shuffle(list);//打乱顺序
System.out.println("乱序"+list);
System.out.println("A等"+list.get(0));
System.out.println("B等"+list.get(1));
System.out.println("B等"+list.get(2));
System.out.println("C等"+list.get(3));
System.out.println("C等"+list.get(4));
System.out.println("C等"+list.get(5));
}
}
如下图,给你贴出了代码段。可以利用字符串的substring函数来进行截取。
其中,substring函数有两个参数:
1、第一个参数是开始截取的字符位置。(从0开始)
2、第二个参数是结束字符的位置+1。(从0开始)
indexof函数的作用是查找该字符串中的某个字的位置,并且返回。
扩展资料:
substring这个函数也可以只写一个参数,就是起始字符位置。这样就会自动截取从开始到最后。
例如:
结果是:456789(注意:包括4。)
示例:
"hamburger".substring(3,8) returns "burge"
"smiles".substring(0,5) returns "smile"
参考资料:百度百科——substring
java中截取未知长度字符串主要是使用String类,示例如下:
/**
* @author cn
* @param s 要截取的字符串
* @param length 要截取字符串的长度-是字节一个汉字2个字节
* return 返回length长度的字符串(含汉字)
*/
private static String getTitleToTen(String s, int length) throws Exception
{
byte[] bytes = s.getBytes("Unicode");
int n = 0;
int i = 2;
for (; i bytes.length n length; i++){
if (i % 2 == 0){
n++;
}else{
if (bytes[i] != 0){
n++;
}
}
}
/*if (i % 2 == 1){
if (bytes[i - 1] == 0)
i = i - 1;
else
i = i + 1;
}*/
//将截一半的汉字要保留
if (i % 2 == 1){
i = i + 1;
}
String eside = ".................................................................";
byte[] byteEside = eside.getBytes("Unicode");
String title = "";
if (bytes[i-1] == 0){
title = new String(bytes, 0, i, "Unicode")+new String(byteEside,0,40,"Unicode");
}else{
title = new String(bytes, 0, i, "Unicode")+new String(byteEside,0,38,"Unicode");
}
return title;
}