我的 Java 扫描器不会停止 运行。我正在尝试制作一种按字母顺序对字符串进行排序的方法,但扫描仪不会停止扫描

My Java Scanner wont stop running. I was trying make a method that alphabetically sorts a string but the scanner wont stop scanning

import java.util.Scanner;

public class SortAlphabetically
{
    public static String sortString(String inputString) 
    { 
        char[] stringArr = new char[inputString.length()];
        char temp;
        int n;

        for (int i = 0; i < inputString.length(); i ++)
        {
            stringArr[i] = inputString.charAt(i);
        }

        n = stringArr.length;

        while ( n > 1)
        {
            for(int i=0;i<(stringArr.length-1);i++)
            {
                for(int j=i+1;j>0;j--)
                {
                    if(stringArr[j]<stringArr[j-1])
                    {
                        temp = stringArr[j-1];
                        stringArr[j-1] = stringArr[j];
                        stringArr[j] = temp;
                    }
                }
            }
        }

        String orderedWord = new String (stringArr);
        return orderedWord;
    }

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        String finalWord;
        String initialWord;

        System.out.print("Please enter a word: "); // scan wont stop scanning

        initialWord = scan.nextLine();        
        finalWord = sortString(initialWord);

        System.out.println(finalWord);
    }
}

您忘记减少 n,因此 while (n > 1) 永远保持 true。如下减少 n,您的程序将按预期工作:

while (n > 1) {
    for (int i = 0; i < (stringArr.length - 1); i++) {
        for (int j = i + 1; j > 0; j--) {
            if (stringArr[j] < stringArr[j - 1]) {
                temp = stringArr[j - 1];
                stringArr[j - 1] = stringArr[j];
                stringArr[j] = temp;
            }
        }
    }
    n--;
}

附带说明,您可以替换以下代码片段

char[] stringArr = new char[inputString.length()];      

for (int i = 0; i < inputString.length(); i++) {
    stringArr[i] = inputString.charAt(i);
}

一行如下

char[] stringArr = inputString.toCharArray();

扫描仪没有问题,您的 while 循环是 运行 无限 -> while(n>1),因为 n 不会递减。