Java 从随机用户输入创建字符串数组
我想让用户输入一个随机的字母串,将它们放入数组,然后按字母顺序排序。我遇到的问题是将输入放入数组。我得到的是:Java 从随机用户输入创建字符串数组,java,arrays,sorting,Java,Arrays,Sorting,我想让用户输入一个随机的字母串,将它们放入数组,然后按字母顺序排序。我遇到的问题是将输入放入数组。我得到的是: import java.util.Scanner; public class ArraySort { public static void main(String[] args) { System.out.println("Enter letters"); Scanner kb = new Scanner(System.in); String input = k
import java.util.Scanner;
public class ArraySort {
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] = input;
}
System.out.println(stringArray);
}
import java.util.Scanner;
公共类ArraySort{
公共静态void main(字符串[]args)
{
System.out.println(“输入字母”);
扫描仪kb=新扫描仪(System.in);
字符串输入=kb.nextLine();
int stringLength=input.length();
String[]stringArray=新字符串[stringLength];
对于(int i=0;i
}
当我打印时,这给了我[Ljava.lang.String;@55f96302.要获得数组的字符串形式,请使用class
toString
方法
System.out.println(Arrays.toString(stringArray));
还要注意此类的
sort
方法,尽管在代码的当前状态下,数组的每个项都将等于输入行。要获取数组的字符串形式,请使用classtoString
方法
System.out.println(Arrays.toString(stringArray));
还要注意此类的
sort
方法,尽管在代码的当前状态下,数组的每个项都将与输入行相等。您有两个问题,没有正确打印数组,并且将整个输入存储在数组的每个单元格中。请尝试:
for (int i = 0; i < stringLength; i++)
{
stringArray[i] = input.charAt(i)+"";
System.out.println(stringArray[i]);
}
for(int i=0;i
您有两个问题,没有正确打印数组,并且将整个输入存储在数组的每个单元格中。请尝试:
for (int i = 0; i < stringLength; i++)
{
stringArray[i] = input.charAt(i)+"";
System.out.println(stringArray[i]);
}
for(int i=0;i
您犯了两个主要错误:
1) 您正在为每个字符串分配整个输入stringArray[i]=input;
2) 您必须迭代字符串数组的每个元素。
在Java8
您的代码的更正版本为:
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);
}
}
你就完了
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);
}
}
您犯了两个主要错误: 1) 您正在为每个字符串分配整个输入
stringArray[i]=input;
2) 您必须迭代字符串数组的每个元素。
在Java8
您的代码的更正版本为:
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);
}
}
你就完了
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);
}
}
要将输入字符串转换为字符数组,请使用
input.tocharray()
您忘记了排序部分;)要将输入字符串转换为字符数组,请使用input.tocharray()
您忘记了排序部分;)忘记了需要迭代。谢谢。忘记了需要迭代。谢谢。将数组中的每个字母视为字符和获取字符串形式之间有什么区别?将数组中的每个字母视为字符和获取字符串形式之间有什么区别这太神奇了。没有for循环怎么不会破坏代码我还不太确定。也从来没有见过输入。split(“”)和双冒号。这太神奇了。没有for循环怎么会破坏代码我还不太确定。也从来没有见过输入。split(“”)和双冒号。