将字符添加到列表时跳过空格

时间:2018-05-23 18:38:56

标签: java

我正在尝试让用户输入单词或短语,并按字母顺序将字符放入列表并对列表进行排序。这是我的代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class SortAlphabetically {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    List<Character> alpha = new ArrayList<Character>();

    System.out.println("Enter a word or phrase");
    StringBuilder input = new StringBuilder(scanner.next());
    scanner.close();

    for (int i = 0; i < input.length(); i++) {
        if (Character.isWhitespace(input.charAt(i))) {
            input.deleteCharAt(i);
        } else {
            alpha.add(input.charAt(i));
        }
    }

    alpha.sort(null);
    System.out.println("Input sorted alphabetically: " + alpha);
    }
}

但是,输入似乎在空白字符后停止输入列表。例如:

Enter a word or phrase
cba fed
Input sorted alphabetically: [a, b, c]

我尝试用

解决这个问题
  if (Character.isWhitespace(input.charAt(i))) {
        input.deleteCharAt(i);
    }

但它似乎没有做任何事情

2 个答案:

答案 0 :(得分:3)

scanner.next()读取单个令牌,因此它会在第一个空格处停止。 如果您使用scanner.nextLine(),它将读取整行,包括空格。

答案 1 :(得分:1)

您必须使用scanner.nextLine()来获取包含所有空格的整行。
此外,您还可以使用简单的Java库函数在一行中更好地实现解决方案在java.lang.String。为什么要废线!

System.out.println("Answer"+input.replaceAll( " ", "" ).toCharArray().toList().sort());