2015-05-09 129 views
0

我想讓用戶輸入一個隨機的字母串,把它們放在一個數組中,然後按字母順序排序。我遇到的問題是將輸入放入數組中。我所擁有的是:從隨機用戶輸入創建一個字符串數組

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); 

} 

}

這給了我[Ljava.lang.String; @ 55f96302當我打印。

+1

在輸入字符串轉換爲字符數組使用'input.toCharArray()' –

+0

你忘了分揀部件;) –

回答

0

要獲取數組的字符串形式,請使用ArraystoString方法。

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

還應注意這個類的sort方法,雖然在代碼的當前狀態的陣列中的每個項目將等於輸入線。

+0

是什麼陣列中處理每個單獨的字母作爲char和獲取之間的差字符串形式? – AndoTwo

3

您有兩個問題,您沒有正確地打印數組,並且將整個輸入存儲在數組的每個單元格中。嘗試:

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

忘記了需要重複。謝謝。 – AndoTwo

1

您正在2個大錯誤:

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); 

    } 
} 
+0

太神奇了。如何缺乏for循環不會打破該代碼,我還不確定。也從來沒有見過input.split(「」)的東西,和雙冒號。 – AndoTwo

+0

魔法的一部分來自Java8。 –

相關問題