6.5課后練習(xí)程序求指導(dǎo) 數(shù)組越界?
package sss;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class collectionstest {
?? ?public void sorttext3(){
?? ??? ?List<String> a = new ArrayList<String>();
?? ??? ?//String[] b = new String[10];
?? ??? ?String st = "abcdefghijklmnopqrstuvwxyz"
?? ??? ??? ??? ?+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
?? ??? ??? ??? ?+ "0123456789";
?? ??? ?Random c = new Random(10);
?? ??? ?int i=0;
?? ??? ?StringBuffer sb = new StringBuffer();
?? ??? ?
?? ??? ??? ?for(int z=0;z<10;z++){
?? ??? ??? ?
?? ??? ??? ??? ?do{
?? ??? ??? ??? ??? ?int j=c.nextInt();
?? ??? ??? ??? ?for(;i<j;i++){
?? ??? ??? ??? ?Random d = new Random(62);
?? ??? ??? ??? ?int num = d.nextInt();
?? ??? ??? ??? ?sb.append(st.charAt(num));
?? ??? ??? ??? ??? }
?? ??? ??? ??? ?}while(a.contains(sb.toString()));
?? ??? ??? ??? ?a.add(sb.toString());
?? ??? ??? }
?? ??? ?System.out.println("···········排序前");
?? ??? ??? ?for (String string : a) {
?? ??? ??? ??? ?System.out.println("元素"+a);
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?Collections.sort(a);
?? ??? ??? ?
?? ??? ?System.out.println("``````````排序后");?? ?
?? ??? ??? ?for (String string : a) {
?? ??? ??? ??? ?System.out.println("元素 "+a);
?? ??? ??? ?}
?? ??? ?
?? ??? ?
?? ?}
?? ?public static void main(String[] args) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?collectionstest a = new collectionstest();
//?? ??? ?a.testsort1();
//?? ??? ?a.sortText2();
?? ??? ?a.sorttext3();
?? ?}
}
2016-12-12
Random num=new Ramdom(62);這條語句是可以出現(xiàn)62的,但是你的String st 的范圍為0~61,所以會出現(xiàn)越界,
另外你的foreach語句遍歷a,為什么不System.out.println(string);而要輸出a那?
2017-02-26
random(i)取的數(shù)不是0-(i-1么?
2016-12-09
? public void sorttext3(){
? ? ? ? List<String> a = new ArrayList<String>();
? ? ? ? //String[] b = new String[10];
? ? ? ? String st = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
? ? ? ? Random c = new Random();
? ? ? ? ? ? for(int z=0;z<10;z++){
? ? ? ? ? ? StringBuffer sb = new StringBuffer();
? ? ? ? ? ? ? ? do{
? ? ? ? ? ? ? ? ? ? int j=c.nextInt(10)+1;
? ? ? ? ? ? ? ? for(int i=0;i<j;i++){
? ? ? ? ? ? ? ? //Random d = new Random(62);
? ? ? ? ? ? ? ? int num = c.nextInt(st.length());
? ? ? ? ? ? ? ? sb.append(st.charAt(num));?
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? }while(a.contains(sb.toString()));
? ? ? ? ? ? ? ? a.add(sb.toString());
? ? ? ? ? ?}
把你的StringBuffer 對象放到了for循環(huán)里了 ,要不每次循環(huán),都會把之前循環(huán)過了字符串加里面,還有就是數(shù)組越界,不清楚怎么回事,不過改的代碼,是沒問題的!
2016-12-09
你定義的st,直接把所有的元素寫在一起,應(yīng)該就好了。