我正在尝试编写一个将String返回给main方法的类。字符串应该包含从1-99开始的6个随机生成的数字,并且这些数字应该在返回之前进行排序。然而它根本不起作用,我整天坐着试图解决这个问题。我是Java的新手,我宁愿放弃它,但它是我大学的一门课。代码如下所示:
package lab1;
import java.util.Random;
import java.util.Scanner;
public class Lab111 {
private String rad;
public String getLottorad() {
Random r = new Random();
int[] tal = new int[6];
for (int i = 0; i < 6; i++) { //generating 6 numbers
tal[i] = r.nextInt(99)+1;
}
int i,j,crap;
for(i=0;i<100;i++) { //trying to sort the generated numbers
for(j=i+1;j<100;j++) {
if(tal[i]>tal[j]) {
crap=tal[i];
tal[i]=tal[j];
tal[j]=crap;
}
}
}
rad = String.valueOf(tal[i]); /*trying to turn the sorted numbers into an int*/
return rad;
}
public static void main(String[] args) {
System.out.print("How many lottery lines do you want? :");
Scanner tgb = new Scanner(System.in);
int antal = tgb.nextInt();
Lab111 l = new Lab111();
for (int i = 0; i < antal; i++)
System.out.println(l.getLottorad()); // printing the sorted strings
}
}
如果有人能够解释我做错了什么,那将非常感激。我和一个同级别的同学一整天都在撕扯我们的头发。
答案 0 :(得分:2)
注意:列表不是数组。阅读List
答案 1 :(得分:2)
你可以使用数组进行更多的工作,而我建议使用集合。
Set<Integer> randomSet = new HashSet<Integer>();
Random r = new Random();
while (randomSet.size() < 6) {
randomSet.add(r.nextInt(99) + 1);
}
List<Integer> listRandom = new ArrayList<Integer>(randomSet);
Collections.sort(listRandom);
System.out.println(listRandom);
6个1到99之间的随机数,没有重复,已排序。 :)
[23,43,54,86,95,98]
答案 2 :(得分:1)
将数字放入一个字符串中:
String rad="";
for(int i=0;i<tal.length;i++){
rad+=tal[i] + ", ";
}
return rad;
此处详细讨论了排序:Java: Sort an array
答案 3 :(得分:1)
使用Array
并包含Integer
和List
,您可以通过这种方式从Collections
六个随机生成的Arrays
创建排序输出类
添加以下导入语句:
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
Random r = new Random();
Integer[] tal = new Integer[6];
for (int i = 0; i < 6; i++) {//generating 6 numbers
tal[i] = r.nextInt(99)+1;
}
List<Integer> integerList = Arrays.asList(tal); // convert Array to List
Collections.sort(integerList); // Sort list
String rad = String.valueOf(integerList); // convert list to String
return rad;
通过修改代码并创建这样的main
方法:
public static void main(String[] args) {
Random r = new Random();
Integer[] tal = new Integer[6];
for (int i = 0; i < 6; i++) {//generating 6 numbers
tal[i] = r.nextInt(99)+1;
}
List<Integer> integerList = Arrays.asList(tal); // convert Array to List
Collections.sort(integerList); // Sort list
String rad = String.valueOf(integerList); // convert list to String
System.out.println(rad);
}
我能够得到以下输出:
[27,42,58,67,79,89]
您可以从不使用Array
并仅使用List
开始进一步优化代码。
这就是优化的样子。
Random r = new Random();
List<Integer> integerList = new ArrayList<Integer>();
for (int i = 0; i < 6; i++) {//generating 6 numbers
integerList.add(r.nextInt(99)+1);
}
Collections.sort(integerList); // Sort list
String rad = String.valueOf(integerList); // convert list to String
return rad;
为了使此优化解决方案有效,您必须导入ArrayList
:
import java.util.ArrayList;