首页 > 解决方案 > 您如何编写一个字典程序,其中有 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));
}

}

标签: javaarrays

解决方案


洗牌

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 次

编辑:使用它两次(带有单词数组和含义数组)


推荐阅读