【问题标题】:How do I make arrays interact with each other?如何使数组相互交互?
【发布时间】:2013-10-03 01:04:20
【问题描述】:

我的学校作业有问题:

编写一个程序来创建两个数组,即 asciiArray 和 每个包含 52 个元素的十进制数组。在 asciiArray 中,存储字母 英文字母;小写和大写字母。在里面 decimalArray,存储每一个对应的十进制值 asciiArray 中特定位置的字母。例如,如果 asciiArray[0] 保存“A”,然后 decimalArray[0] 保存值 65。 将这些数组传递给方法 displayDecValue。在方法内部, 提示用户输入任何英文字母 并显示对应的十进制值。

我编写了一些代码,但我不知道如何使数组相互交互并返回值。对不起,如果这很简单;我以前从未做过Java。我们也不能使用任何高级的东西来编写代码(它是初学者的Java)。

import java.util.Scanner;

public class ParallelArrays {
    public static void main (String [] args) {
        char[] asciiArray = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
                              'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
                              'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
                              'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
                              'W', 'X', 'Y', 'Z' };
        int[] decimalArray = {97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,
                              114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,
                              75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90};
        displayDecValue(asciiArray, decimalArray);
    }

    public static void displayDecValue(char [ ] ascii, int [ ] dec) {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter a letter (a-z or A-Z): ");

        ascii = input.next().charAt(0);

        dec[0] = (int)ascii[0];

        System.out.printf("Decimal value of %c is: " + dec[0], ascii);
    }
}

【问题讨论】:

  • 您不会让数组相互交互,而是编写一些代码以一致且预期的方式与两个数组交互。
  • 我知道这是一项任务,你必须遵守它,但实际上,你永远不会这样做。使用这样的角色,您可能可以通过某种类型的演员来摆脱困境。对于更复杂的数据类型,您可以使用某种Map
  • 数组纯粹是被动的——它们不“做”任何事情。
  • 你要做的是在 ascii 数组中搜索匹配项,然后打印相应的 dec 数组值。这意味着一个循环。请注意,您不应在 displayDecValue 方法中将任何内容分配给 ascii 或 dec。
  • (不敢相信有人真的赞成这个问题。)

标签: java arrays


【解决方案1】:

以下是您应该想知道的事情

1) 您将用户的输入存储到数组变量 ascii 中。这里会发生什么?

2) 您正在使用 ascii[0] 在索引位置 0 处重新分配预定义的 dec 数组。这是什么意思?

3) 如何在 ascii 数组中搜索字符(提示:循环)并与 dec 数组匹配?

4) print 语句是遵循 C 还是 Java 语法?

然后您将能够轻松地修复代码。

【讨论】:

    【解决方案2】:

    您无需手动输入十进制数组值。您可以执行以下操作。 如果我们将 char 转换或类型转换为 int,我们将得到该字符的十进制值。

    例如 int output= (int)'a';// 这里输出97,相当于字符'a'的十进制值。

        int[] decimalArray = new int[asciiArray.length];
        for (int i = 0; i < asciiArray.length; i++) {
            decimalArray[i] = (int)asciiArray[i];
        }
    

    完整的例子如下。

    import java.util.Scanner;
    
    public class ParallelArrays {
        public static void main(String[] args) {
            char[] asciiArray = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
                    'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
                    'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
                    'U', 'V', 'W', 'X', 'Y', 'Z' };
    
            int[] decimalArray = new int[asciiArray.length];
            for (int i = 0; i < asciiArray.length; i++) {
                decimalArray[i] = (int)asciiArray[i];
            }
            displayDecValue(asciiArray, decimalArray);
        }
    
        public static void displayDecValue(char[] ascii, int[] dec) {
            Scanner input = new Scanner(System.in);
    
            System.out.print("Enter a letter (a-z or A-Z): ");
    
            char inputChar = input.next().charAt(0);
    
            for (int i = 0; i < ascii.length; i++) {
    
                if (inputChar == ascii[i]) {
                    System.out.printf("Decimal value of '" + ascii[i] + "' is: "
                            + dec[0]);
                    break;
                }
    
            }
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      相关资源
      最近更新 更多