java - 您如何编写一个字典程序,其中有 2 个数组,一个带有单词,另一个带有含义
问题描述
然后将 2 个数组打乱,并且需要输入来重新组织它们?
我对此有两个主要问题,1 如何“洗牌”一个数组,如果输入与数组中的一个值匹配以使其与第一个数组匹配,你将如何让输入识别第二个数组中的含义?
编辑:首先,程序应该初始化两个字符串数组,第一个包含 10 个单词,第二个包含这些单词的 10 个含义。单词和含义的顺序不应该相同,它们应该被打乱。
程序应该以打乱顺序显示这两个数组。
然后程序开始逐个询问用户第一个数组中每个单词的含义,用户应该用第二个数组中的短语来回答。
当用户回答某个短语时,应该调用 orderMeanings 方法。此方法重新排序含义,因为它们应该与单词的索引对齐。假设程序询问数组 1 中索引为 2 的“Brute”的含义,用户回答第二个数组中索引 7 中的“savage”,程序必须将“savage”与索引 2 处的单词交换,因此 savage 变为索引 2。
程序应重复此过程 10 次,以组织第二个数组与第一个数组中单词的正确含义。
组织好这 10 个单词后,程序应该显示数组 1 中的单词,即数组 2 中的单词,用于数组中的所有项目,每个项目都在单独的行上。
import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;
public class dic {
static String[] words = { "Inform", "Despise", "Adoration", "Famished" };
static int l = words.length;
static String[] meanings = { "explain", "hate", "love", "hungry" };
static int len = meanings.length;
static String[] words2;
public static void main(String[] args) {
randomize(l, words, len, meanings);
}
static void randomize(int l, String[] words2, int len, String[] meanings2) {
Random r = new Random();
for (int i = l - 1; i > 0; i--) {
// Pick a random index from 0 to i
int j = r.nextInt(i + 1);
// Swap array[i] with the element at random index
String temp = words2[i];
words2[i] = words2[j];
words2[j] = temp;
for (int in = len - 1; in > 0; in--) { // For meanings array
int jj = r.nextInt(in + 1);
String temp2 = meanings2[in];
meanings2[in] = meanings2[jj];
meanings2[jj] = temp2;
}
}
// Prints the random array
System.out.println(Arrays.toString(words2));
System.out.println(Arrays.toString(meanings2));
}
}
解决方案
洗牌
public void shuffle(String arr[])
{
for(int i=0;i<arr.length;i++)
{
int r1 = (int) Math.random()*arr.length;
int r2 = (int) Math.random()*arr.length;
arr[r1] = arr[r1] + arr[r2];
arr[r2] = arr[r1].substring(0, (arr[r1].length() - arr[r2].length()));
arr[r1] = arr[r1].substring(arr[r2].length());
}
}
解释:它带来两个随机值,然后用这些数字改变数组元素并重复 10 次
编辑:使用它两次(带有单词数组和含义数组)
推荐阅读
- java - 我们如何知道使用 VisualVM 或任何其他工具在我的 Java 程序中当前正在执行哪种类型的 GC(年轻/完整)?
- browser-extension - Chrome 扩展 MV3 服务工作者持久数据
- android - 在android中更改应用程序状态栏白色和状态栏黑色的正确方法是什么?
- jmeter - 使用 jmeter 进行性能测试交叉检查与 Web 数据的响应不匹配
- excel - 将多张工作表复制并粘贴到一张工作表
- bash - weblogic中的认证更新自动化
- python-3.x - 如何将系列中的数据添加到python中的列表中
- javascript - 错误:值未定义,应为 React Native 动画图表库中的对象
- python - Python 3:查找和删除包含重复文件的文件夹;保留包含大多数文件的文件夹
- python - Plotly:使用下拉菜单选择要显示的 df