Java 从数组中选择随机元素
我已经编写了一个程序,随机选择一个动词,并要求您提供Perfekt格式。它会不断显示新动词,直到你出错。然后程序会告诉你你的答案是错误的,并告诉你你得到了多少分。程序还将点数写入test.txt文件,然后从中读取点数,每次尝试后,程序都会跟踪历史最高分数 但我不想像我在第一个版本的程序中那样写成千上万的if语句。所以我制作了两个数组。第一个数组有一个“问题”,第二个数组有一个“答案”。但我不知道如何编程生成随机数,然后从第一个数组中询问这个verben。例如,数字3和程序选择verben[2]。并寻找详细的答案[2] 第一个方案:Java 从数组中选择随机元素,java,arrays,random,Java,Arrays,Random,我已经编写了一个程序,随机选择一个动词,并要求您提供Perfekt格式。它会不断显示新动词,直到你出错。然后程序会告诉你你的答案是错误的,并告诉你你得到了多少分。程序还将点数写入test.txt文件,然后从中读取点数,每次尝试后,程序都会跟踪历史最高分数 但我不想像我在第一个版本的程序中那样写成千上万的if语句。所以我制作了两个数组。第一个数组有一个“问题”,第二个数组有一个“答案”。但我不知道如何编程生成随机数,然后从第一个数组中询问这个verben。例如,数字3和程序选择verben[2]。
import java.util.Random;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.*;
public class VerbenTest{
public static void main(String args[]){
String glagol;
String correct = "Correct!";
String incorrect = "Incorrect!";
int j ;
int points = 0;
boolean answer;
File file = new File("test.txt");
for(int i = 0; i <= points; i++){
Random random = new Random();
String verben[] = {"trinken", "lesen", "schwimmen", "sterben", "fahren"};
String verbenAnswer[] = {"hat getrunken", "hat gelesen", "hat geschwommen", "ist gestorben", "ist gefahren"};
glagol = verben[random.nextInt(verben.length)];
System.out.println("Please enter correct form of verb!");
System.out.println(glagol);
String enter = Input.readLine();
if(glagol.equals(verben[0]) && enter.equals(verbenAnswer[0])){
answer = true;
points += 1;
}else if(glagol.equals(verben[1]) && enter.equals(verbenAnswer[1])){
answer = true;
points += 1;
}else if(glagol.equals(verben[2]) && enter.equals(verbenAnswer[2])){
answer = true;
points += 1;
}else if(glagol.equals(verben[3]) && enter.equals(verbenAnswer[3])){
answer = true;
points += 1;
}else if(glagol.equals(verben[4]) && enter.equals(verbenAnswer[4])){
answer = true;
points += 1;
}else{
answer = false;
points += 0;
}
if(answer == true){
System.out.println(correct);
}else{
System.out.println(incorrect);
System.out.println("You collected: " + points + "/" + (i+1));
}
}
int highScore = 0;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
while (line != null) { // read the score file line by line
try {
int score = Integer.parseInt(line.trim()); // parse each line as an int
if (score > highScore) // and keep track of the largest
{
highScore = score;
}
} catch (NumberFormatException e1) {
// ignore invalid scores
//System.err.println("ignoring invalid score: " + line);
}
line = reader.readLine();
}
reader.close();
} catch (IOException ex) {
System.err.println("ERROR reading scores from file");
}
// display the high score
if (points > highScore){
System.out.println("You now have the new high score! The previous high score was " + highScore + " !");
} else if (points == highScore) {
System.out.println("You tied the high score!");
} else {
System.out.println("The all time high score is" + highScore + " !");
}
// append the last score to the end of the file
try {
BufferedWriter output = new BufferedWriter(new FileWriter(file, true));
output.newLine();
output.append("" + points);
output.close();
} catch (IOException ex1) {
System.out.printf("ERROR writing score to file: %s\n", ex1);
}
}
import java.util.Random;
导入java.io.File;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.Scanner;
导入java.io.*;
公共类逐字逐句{
公共静态void main(字符串参数[]){
串珠;
String correct=“correct!”;
字符串不正确=“不正确!”;
int j;
积分=0;
布尔答案;
File File=新文件(“test.txt”);
for(int i=0;i highScore)//并跟踪最大的
{
高分=分数;
}
}捕获(NumberFormatException e1){
//忽略无效分数
//System.err.println(“忽略无效分数:+行”);
}
line=reader.readLine();
}
reader.close();
}捕获(IOEX异常){
System.err.println(“从文件读取分数时出错”);
}
//显示高分
如果(分数>高分){
System.out.println(“您现在有了新的高分!以前的高分是“+highScore+”!”;
}否则如果(分数==高分){
System.out.println(“你得了高分!”);
}否则{
System.out.println(“所有时间的高分为“+高分+”!”;
}
//将最后一个分数附加到文件末尾
试一试{
BufferedWriter输出=新的BufferedWriter(新的FileWriter(file,true));
output.newLine();
输出。追加(“+”点);
output.close();
}捕获(IOException ex1){
System.out.printf(“将分数写入文件时出错:%s\n”,ex1);
}
}
}
第二个方案:
import java.util.Random;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.*;
import javax.swing.*;
import java.util.Date;
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class Verben2{
String glagol;
String correct = "Correct!";
String incorrect = "Incorrect!";
int points = 1;
boolean answer;
boolean white = true;
public static void main(String args[]){
new Verben2();
}
public Verben2(){
File file = new File("test.txt");
for(int i = 0; i < points; i++){
Random random = new Random();
String verben[] = {"trinken", "lesen", "schwimmen", "sterben", "fahren"};
String verbenAnswer[] = {"hat getrunken", "hat gelesen", "hat geschwommen", "ist gestorben", "ist gefahren"};
glagol = verben[random.nextInt(verben.length)];
System.out.println("Please enter correct form of verb!");
System.out.println(glagol);
String enter = Input.readLine();
enter = verbenAnswer[random.nextInt(verbenAnswer.length)];
for(int j = 0; j < verben.length; j++){
if(glagol.equals(verben[j])){
if(enter.equals(verbenAnswer[j])){
answer = true;
points +=1;
}else{
answer = false;
points +=0;
}
}else{
answer = false;
points += 0;
}
}
if(answer == true){
System.out.println(correct);
points += 1;
}else{
points +=0;
System.out.println(incorrect);
System.out.println("You collected: " + (points -1));
}
}
int highScore = 0;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
while (line != null) { // read the score file line by line
try {
int score = Integer.parseInt(line.trim()); // parse each line as an int
if (score > highScore) // and keep track of the largest
{
highScore = score;
}
} catch (NumberFormatException e1) {
// ignore invalid scores
//System.err.println("ignoring invalid score: " + line);
}
line = reader.readLine();
}
reader.close();
} catch (IOException ex) {
System.err.println("ERROR reading scores from file");
}
// display the high score
if (points > highScore){
System.out.println("You now have the new high score! The previous high score was " + highScore + "!");
} else if (points == highScore) {
System.out.println("You tied the high score!");
} else {
System.out.println("The all time high score is " + highScore + "!");
}
// append the last score to the end of the file
try {
BufferedWriter output = new BufferedWriter(new FileWriter(file, true));
output.newLine();
output.append("" + points);
output.close();
//new Verben();
} catch (IOException ex1) {
System.out.printf("ERROR writing score to file: %s\n", ex1);
}
}
}
import java.util.Random;
导入java.io.File;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.Scanner;
导入java.io.*;
导入javax.swing.*;
导入java.util.Date;
导入java.awt.Desktop;
导入java.io.IOException;
导入java.net.URI;
导入java.net.URISyntaxException;
公共类Verben2{
串珠;
String correct=“correct!”;
字符串不正确=“不正确!”;
积分=1;
布尔答案;
布尔白=真;
公共静态void main(字符串参数[]){
新的Verben2();
}
公共Verben2(){
File File=新文件(“test.txt”);
对于(int i=0;ihighScore)//并跟踪最大的
{
高分=分数;
}
}捕获(NumberFormatException e1){
//忽略无效分数
//System.err.println(“忽略无效分数:+行”);
}
line=reader.readLine();
}
reader.close();
}捕获(IOEX异常){
System.err.println(“从文件读取分数时出错”);
}
//显示高分
如果(分数>高分){
System.out.println(“您现在有了新的高分!以前的高分是“+highScore+”!”;
}否则如果(分数==高分){
System.out.println(“你得了高分!”);
}否则{
System.out.println(“所有时间的高分为“+高分+”!”;
}
//将最后一个分数附加到文件末尾
int index = random.nextInt(verben.length);
System.out.println("Please enter correct form of verb!");
System.out.println(verben[index]);
String enter = Input.readLine();
if(enter.equals(verbenAnswer[index])) {
answer = true;
points += 1;
}
String verben[] = {"trinken", "lesen", "schwimmen", "sterben", "fahren"};
String verbenAnswer[] = {"hat getrunken", "hat gelesen", "hat geschwommen", "ist gestorben", "ist gefahren"};
int randomNumber = random.nextInt(verben.length);
glagol = verben[randomNumber];
System.out.println("Please enter correct form of verb!");
System.out.println(glagol);
String enter = Input.readLine();
if(enter.equalsIgnoreCase(verbenAnswer[randomNumber])){
answer = true;
points += 1;
}