我正在尝试制作一个项目,询问一个人想要的字符串数量,然后提示该人以任何顺序输入字符串。然后我应该按字母顺序排序,我根本不能使用Java.util。我应该使用任何类型的排序算法,可以按字母顺序对输入的字符串进行排序。这是我的代码到目前为止,任何人都可以帮助我在我的代码中放置一个排序算法吗?
package sorting;
import java.io.*;
public class Sorting
{
private static BufferedReader stdin = new BufferedReader( new InputStreamReader( System.in ) );
public static void main(String[] arguments) throws IOException
{
System.out.println("How many strings would you like to enter?");
int stringCount = Integer.parseInt(stdin.readLine());
String[] stringInput = new String[stringCount];
String message = "";
for(int i = 0; i < stringCount; i++)
{
System.out.print("Could you enter the strings here: \n");
stringInput[i] = stdin.readLine();
message = message + stringInput[i] + ", ";
}
System.out.println("So you entered:\n" + message);
}
private static void bubbleSort(String[] stringInput, int length) {
int temp, counter, index;
for(counter=0; counter<length-1; counter++) {
for(index=0; index<length-1-counter; index++) {
if(stringInput[index] > stringInput[index+1]) {
temp = stringInput[index];
stringInput[index] = stringInput[index+1];
stringInput[index+1] = temp;
}
}
}
}
}
答案 0 :(得分:3)
查看sorting algorithm的内容,并从列表中选择一个。
然后实施算法(最好采用单独的方法)。
然后在输入循环后从main方法调用此方法。
如果您对2.或3.有问题,请发布(通过编辑问题)您尝试过的内容,以及您的问题(例如,任何错误消息或错误与预期的输出),我们可以帮助您。< / p>
答案 1 :(得分:3)
尝试使用冒泡排序,插入排序或合并排序,您可以通过谷歌Google了解更多相关信息。
此外,Scanner有时比BufferReader好得多。但由于它是在util我猜你不能使用它。
答案 2 :(得分:2)
指出你的方向思考以下......
基本上它的工作方式是你有一个列表,在这种情况下可以说ints
int unsortedNums[] = new list[5];
unsortedNums[0] = 1;
unsortedNums[1] = 4;
unsortedNums[2] = 6;
unsortedNums[3] = 2;
unsortedNums[4] = 7;
1,4,6,2,7
你需要从最小到最大排序。你这样做的方式如下,使用伪代码:
//loop through the list
for(int i = 0; i < unsortedNums.length; i++){
if(unsortedNums[i] <= unsortedNums[i+1]){ //if current number is < next number
//keep the number there because it is less than the next number
}else{
//you need to shift the current number to the right until because it is bigger
//than the next number
}
}
现在这不会在第一次尝试时完全排序,[在这个例子中会使你的列表1,4,2,6,7]你要么必须再次调用这个函数,直到列表完全排序,或者您可以查看递归,或阅读有关任何类型,如冒泡排序,插入排序,合并排序等。
提及确保检查阵列界限可能是件好事,因为如果i + 1比你的列表大,你会得到一个例外,所以请记住这一点。
祝你好运,记住,家庭作业不仅仅是增加你成绩的另一件事,但家庭作业的真正重要性在于学习和练习,否则你将无法理解并在任何课堂上取得成功。如果它太容易了,你可能没有学到任何东西。如果它很难,你可能会学到很多东西,即使你并不总是正确的。
快乐编码。