在Java中生成一个随机的字符串

问题描述:

我需要创建一个随机的字母串,但以前从未使用随机类。在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

首先,只是一件小事:

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