我希望用户输入一个随机的字母串,将它们放在一个数组中,然后按字母顺序对它们进行排序。我遇到的问题是将输入放入数组中。我所拥有的是:
bytearray
}
当我打印时,这给了我[Ljava.lang.String; @ 55f96302。
答案 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形式,请使用Arrays类toString
方法。
System.out.println(Arrays.toString(stringArray));
另请注意此类的sort
方法,尽管在代码的当前状态中,数组的每个项目都等于输入行。