我非常新编程,我正在尝试创建一个程序,该程序将要求用户在哨兵控制的循环中输入单词。
输入所有单词后,程序应按字母顺序与原始顺序并排显示。
现在我正在尝试创建具有用户输入的确切长度的userWords数组(最多20个)的副本,以便可以对其进行排序(不能对空值进行排序)。
我遇到了问题 任何帮助表示赞赏!
import java.util.Arrays;
import java.util.Scanner;
public class AlphabeticalWords {
public static void main(String[] args) {
int counter = 0;
String [] userWords= new String[20];
String[] myCopyArray=getArrayCopy(userWords);
myCopyArray[counter];
Scanner input= new Scanner(System.in);
for (counter=0; counter< userWords.length; counter++){
System.out.println("Please enter a word or Crl-D to stop");
while (input.hasNext()){
userWords[counter]=input.next();
System.out.println("Please enter a word or Crl-D to stop");
counter++;
}
}
//System.arraycopy(userWords);
//Arrays.sort(userWords);
//printArrayElements(userWords);
}
public static void printArrayElements( String[] anyArray){
for(int index=0; index< anyArray.length; index++){
System.out.println(anyArray[index]);
}
}
答案 0 :(得分:0)
请看这里。
完成修改
1。)当使用for循环时,不需要while循环。
2.)使用System.arraycopy(userWords, 0, newArray, 0, userWords.length);
复制数组。
3。)维护,复制和复制两个数组,在复制的数组上完成排序。
4.)最后打印两个阵列。
public static void main(String[] args) {
int counter = 0;
String[] userWords = new String[5];
Scanner input = new Scanner(System.in);
for (counter = 0; counter < userWords.length; counter++) {
System.out
.println("Please enter a word or Crl-D to stop" + counter);
userWords[counter] = input.nextLine();
}
String[] myCopyArray = getArrayCopy(userWords);
Arrays.sort(myCopyArray);
printArrayElements(userWords, myCopyArray);
}
private static String[] getArrayCopy(String[] userWords) {
String[] newArray = new String[userWords.length];
System.arraycopy(userWords, 0, newArray, 0, userWords.length);
return newArray;
}
public static void printArrayElements(String[] originalArray,
String[] sortedArray) {
for (int index = 0; index < originalArray.length; index++) {
System.out.println(originalArray[index] + " :: "
+ sortedArray[index]);
}
}
<强>输出强>
Please enter a word or Crl-D to stop0
asd
Please enter a word or Crl-D to stop1
asda
Please enter a word or Crl-D to stop2
werw
Please enter a word or Crl-D to stop3
efgv
Please enter a word or Crl-D to stop4
qe
asd :: asd
asda :: asda
werw :: efgv
efgv :: qe
qe :: werw