我正在尝试从项目中随机拉出一个对象,但是我必须使用Math.Random并且我不确定如何。使用java.util.random和nextInt可以很好地完成工作,但我无法使用它们。 我已经在math.random中看到了这类问题的其他答案,但是大多数都是从数组中提取随机对象的索引,而不是对象本身。
这是我的班级: (现在我在循环中有随机和nextInt只是为了展示它应该如何工作,但我需要从Math.random得到完全相同的结果)
import java.util.Scanner;
import java.util.Random;
public class Madlibsdriver
{
static Scanner scan= new Scanner (System.in);
public static void main(String[] args)
{
System.out.print ("Welcome to Mad libs!");
System.out.println();
System.out.println("----------------------------------------------");
System.out.println("Enter a noun:");
String ip1= scan.nextLine();
System.out.println("Enter an adjective:");
String ip2= scan.nextLine();
System.out.println ("Enter a verb:");
String ip3= scan.nextLine();
System.out.println ("Enter an adverb (ex: angrily) :");
String ip4= scan.nextLine();
System.out.println ("Enter another noun:");
String ip5= scan.nextLine();
Phrase obama= new Obama(ip1, ip2, ip3, ip4, ip5);
Phrase shake= new Shakespeare (ip1, ip2, ip3, ip4, ip5);
Phrase horror= new Horror (ip1, ip2, ip3, ip4, ip5);
Phrase mystery= new Mystery (ip1, ip2, ip3, ip4, ip5);
Phrase romance= new Romance (ip1, ip2, ip3, ip4, ip5);
Phrase[]libs= new Phrase [5];
libs[0]= obama;
libs[1]= shake;
libs[2]= hooror;
libs[3]= mystery;
libs[4]= romance;
System.out.println("Press 1 to generate a mad lib or 2 to exit.");
int begin= scan.nextInt();
while ((ip1.length()>0)&& begin==1)
{
Random rand = new Random();
System.out.println();
System.out.println ( libs[rand.nextInt(libs.length)]);
System.out.println("---------------------------------------");
System.out.print ("To play again, press 1. To exit, press 2.");
begin=scan.nextInt();
if (begin==2) break;
}
}
}
答案 0 :(得分:0)
我想你可以使用以下内容。
public static int getRandom(int max) {
return (int) Math.floor(Math.random() * (max + 1));
}
然后得到长度为n>的数组arr的索引。 0:
arr[getRandom(n - 1)]
答案 1 :(得分:0)
尝试改变:
Random rand = new Random();
System.out.println();
System.out.println ( libs[rand.nextInt(libs.length)]);
使用:
int length = libs.length;
double val = length * Math.random();
System.out.println();
System.out.println ( libs[(int) val]);