2013-03-14 46 views
-1

我需要創建一個隨機的字母串,但以前從未使用隨機類。在Java中生成一個隨機的字符串

這裏是規範: 創建一個小程序,要求用戶輸入他們的名字。 將名稱存儲在字符串中 打印名稱 要求用戶更改其姓氏 將字符串操作爲新的姓氏。 打印新名稱。 創建一個無限循環,隨機更改字符串變量。看看你的程序是否會崩潰。

到目前爲止,我有這個

import java.util.Scanner; 
import java.util.Random; 

public class StringNames { 

    public static void main(String[] args) { 

     System.out.println("Please enter a name"); 

     Scanner myInput = new Scanner(System.in); 
     String firstName = new String(); 
     firstName = myInput.next(); 

     String lastName = new String(); 
     lastName = myInput.next(); 

     System.out.println(firstName + " " + lastName); 

     System.out.println("Please change your last name"); 
     lastName = myInput.next(); 

     System.out.println(firstName + " " + lastName); 

     for (;;) { 

     } 
    } 

} 

如何創建字母隨機字符串在無限循環改變姓氏?我不確定字符串需要多長時間。代碼越簡單越好。我很慢。

謝謝您的指導

+6

看!當我點擊時有一個[鏈接](http://stackoverflow.com/questions/41107/how-to-generate-a-random-alpha-numeric-string-in-java?rq=1)這個頁面可能會有所幫助! – 2013-03-14 00:27:37

+0

我確實看到了這個鏈接,但我對任何答案都不滿意。謝謝你。 – 2013-03-14 00:54:17

+0

[This answer](http://stackoverflow.com/a/2863888/1690982)可能會有所幫助。 – ddmps 2013-03-14 23:50:42

回答

1

首先,只是一件小事:

String lastName=myInput.next(); 

很多比創建與類字符串的字符串,然後分配該字符串的值更有效。

我對你的問題的解決方案是:

import java.util.Scanner; 
    import java.util.Random; 

public class StringNames { 

public static void main(String[] args) { 
    Random generator=new Random(); 
    Scanner myInput = new Scanner(System.in); 

    System.out.println("Please enter a name"); 
    String firstName = myInput.next(); 

    System.out.println("Please enter a last name"); 
    String lastName = myInput.next(); 

    System.out.println("Your name is:"); 
    System.out.println(firstName + " " + lastName); 

    System.out.println("Please change your last name"); 
    lastName = myInput.next(); 

    System.out.println(firstName + " " + lastName); 
    char[] lastNameChar=lastName.toCharArray(); 
    for (int i=0;i<lastNameChar.length;i++) { 
     int randomNum=generator.nextInt(133); 
     lastNameChar[i]=(char)randomNum; 

    } 
    lastName=String.valueOf(lastNameChar); 
    System.out.println(firstName + " " + lastName); 
} 
} 

這裏做的事情是,當你指定它提示的名稱等。然後有一個for循環。當他們改變他們的名字時,這個字符串被轉換成一個char數組,它允許我們獲得長度並改變'String'中的單個元素。然後我們生成一個隨機數字,用作隨機生成的字符。

然後,我們通過casting將隨機生成的數字轉換爲char。

這裏做的事情是,它會立即改變值的字符在該ASCII字符表:ASCII Characters

我們將繼續爲他們的新姓氏的長度。然後將char數組轉換回一個字符串,然後打印字符串。

爲了細化數發生器的範圍內(它在0和133之間產生的分鐘)只需添加一個do while循環:

do{ 
     randomNum=generator.nextInt(133); 
    }while(randomNum>33 &&randomNum<120);