比较两个数组时出现问题

Having problems when comparing two arrays

该程序应该将一个单词从美式翻译成英式。它仅适用于第一个单词,但不适用于其他单词,因为它给出了 else 语句。

我的代码:

import java.util.Scanner;

public class BritishTranslator {

    public static void main(String[]args) {
        Scanner input = new Scanner(System.in);
        String word;

        String [] america = new String[8];
        String [] british = new String[8];

        america[0] = "attic";
        america[1] = "business suit";
        america[2] = "elevator";
        america[3] = "frenc fries";
        america[4] = "ice cream";
        america[5] = "sneakers";
        america[6] = "truck";
        america[7] = "zero";

        british[0] = "loft";
        british[1] = "lounge suit";
        british[2] = "lift";
        british[3] = "chips";
        british[4] = "ice";
        british[5] = "plimsolls";
        british[6] = "lorry";
        british[7] = "nough";

        System.out.println("Please enter an American word: ");
        word = input.nextLine();

        for (int i = 0; i < america.length; i++)

        {
            for(int j = 0; j < british.length; j++)

            {
                if (word.equals(america[i])) 

                {
                    System.out.println(america[i] + " in british is: " + british[j]);
                    System.exit(0);
                }

                else

                {
                    System.out.println("Word not found in the dictionary.");
                    System.exit(0);
                }
            }
        }
    }
}

我需要帮助来学习如何调试此代码。

你只需要遍历美国数组,如果你在英国数组中找到相同索引的单词。 else 退出循环

    for (int i = 0; i < america.length; i++){
            if (word.equals(america[i])) {
                System.out.println(america[i] + " in british is: " + british[i]);
                System.exit(0);
            }
    }
    System.out.println("Word not found in the dictionary.");
    System.exit(0); // you dont need this as well

}

由于您将美国单词与法语单词配对,您只需循环数组一次,如果该单词等于您的美国单词,那么您希望在法语数组和法语数组中的相同索引处打印字符串美国数组。

for (int i = 0; i < america.length && i < british.length; i++)
{
    if (word.equals(america[i])) 
    {
        System.out.println(america[i] + " in british is: " + british[i]);
        System.exit(0);
    }
}

System.out.println("Word not found in the dictionary.");

由于 2 个数组在同一索引中包含单词翻译,因此您不必遍历第二个 table。只需在第一个 table 中找到单词的索引,然后使用此索引在第二个 table 中获取翻译。如果找不到单词,还可以使用 boolean 标志 found 在循环后检查:

System.out.println("Please enter an American word: ");
word = input.nextLine();

boolean found = false;
for (int i = 0; i < america.length; i++) {
    found = word.equals(america[i]);
    if (found) {
        System.out.println(america[i] + " in british is: " + british[i]);
        break;
    }
}
if (!found)
    System.out.println("Word not found in the dictionary.");

使用 break 循环会在找到单词后立即停止。

我相信你有一些事情正在发生。

首先,我认为您不想在 完成循环之前执行 else 语句。正如目前所写的那样,由于您的 if/else 和 System.exit(0) 调用的性质,一旦您的第一个 'if' 语句失败,它就会终止。

System.out.println("Please enter an American word: ");
word = input.nextLine();

for (int i = 0; i < america.length; i++)

{
    for(int j = 0; j < british.length; j++)

    {
        if (word.equals(america[i])) 

        {
            System.out.println(america[i] + " in british is: " + british[j]);
            System.exit(0);
         } 
    }
}
System.out.println("Word not found in the dictionary.");
System.exit(0);

但是,您实际上并不需要第二个循环,因为您拥有在迭代第一个循环时找到的索引,因此您可以进一步简化您的答案。

System.out.println("Please enter an American word: ");
word = input.nextLine();

for (int i = 0; i < america.length; i++)

{
        if (word.equals(america[i])) 

        {
            System.out.println(america[i] + " in british is: " + british[i]);
            System.exit(0);
         } 
}
System.out.println("Word not found in the dictionary.");
System.exit(0);

由于值是通过索引映射的,因此您可以直接访问要翻译的内容而无需第二个循环,从而使您的程序更快、更简单!