Java 前哨控制回路+;阵列

Java 前哨控制回路+;阵列,java,arrays,Java,Arrays,我对编程非常陌生,我正在尝试创建一个程序,要求哨兵控制循环中的用户输入单词。 输入所有单词后,程序应按字母顺序与原始顺序并排显示 现在我正在尝试创建一个userWords数组(最大20个)的副本,该数组具有用户输入的精确长度,因此可以对其进行排序(不能对null进行排序) 我有问题。 感谢您的帮助 import java.util.Arrays; import java.util.Scanner; public class AlphabeticalWords { public sta

我对编程非常陌生,我正在尝试创建一个程序,要求哨兵控制循环中的用户输入单词。
输入所有单词后,程序应按字母顺序与原始顺序并排显示

现在我正在尝试创建一个userWords数组(最大20个)的副本,该数组具有用户输入的精确长度,因此可以对其进行排序(不能对null进行排序)

我有问题。
感谢您的帮助

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]);
        }
    }
导入java.util.array;
导入java.util.Scanner;
公共类字母词{
公共静态void main(字符串[]args){
int计数器=0;
String[]userWords=新字符串[20];
字符串[]myCopyArray=getArrayCopy(userWords);
阵列[计数器];
扫描仪输入=新扫描仪(System.in);
for(计数器=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]);
        }

    }

您能解释一下您遇到的问题是什么吗?什么是
getArrayCopy
您编写的东西?您可以使用
System.arraycopy(userWords,0,myCopyArray,0,userWords.length)
复制数组。ankur-singhal非常感谢您的帮助!我完全理解您所做的更改,它们使一切变得更加清晰。为了回答这些评论,getArrayCopy是我们在课堂上编写的一个程序,用于制作真正的副本。它是针对int类型完成的,但我将其转换为String。System.arraycopy是一个很简单的程序我最初尝试使用的g,但无法计算参数。
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