从随机用户输入创建字符串数组

时间:2015-05-09 22:10:34

标签: java arrays sorting

我希望用户输入一个随机的字母串,将它们放在一个数组中,然后按字母顺序对它们进行排序。我遇到的问题是将输入放入数组中。我所拥有的是:

bytearray

}

当我打印时,这给了我[Ljava.lang.String; @ 55f96302。

3 个答案:

答案 0 :(得分:3)

您有两个问题,即您没有正确打印数组,并且您将整个输入存储在数组的每个单元格中。尝试:

    for (int i = 0; i < stringLength; i++)
    {
        stringArray[i] = input.charAt(i)+"";  
        System.out.println(stringArray[i]);   
    }

答案 1 :(得分:1)

你犯了两个重大错误:

1)您正在为每个字符串分配整个输入stringArray[i] = input;

2)你必须遍历字符串数组的每个元素。 在Java8中,可以使用Arrays.stream()轻松完成此操作。

您的代码的更正版本为:

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        System.out.println("Enter letters");
        Scanner kb = new Scanner(System.in);
        String input = kb.nextLine();
        int stringLength = input.length();
        String[] stringArray = new String[stringLength];

        for (int i = 0; i < stringLength; i++)
        {
            stringArray[i] = Character.toString(input.charAt(i));
        }

        Arrays.stream(stringArray).forEach(System.out::print);

    }
}

顺便说一下。 String[] stringArray=input.split("");会更短。

其他: 如果您想要排序输出:

stringArray=Arrays.stream(stringArray).sorted().toArray(String[]::new);
Arrays.stream(stringArray).forEach(System.out::print);

你已经完成了。

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        System.out.println("Enter letters");
        Scanner kb = new Scanner(System.in);
        String input = kb.nextLine();
        String[] stringArray=input.split("");
        stringArray=Arrays.stream(stringArray).sorted().toArray(String[]::new);

        Arrays.stream(stringArray).forEach(System.out::print);

    }
}

答案 2 :(得分:0)

要获取数组的String形式,请使用ArraystoString方法。

System.out.println(Arrays.toString(stringArray));

另请注意此类的sort方法,尽管在代码的当前状态中,数组的每个项目都等于输入行。