gpt4 book ai didi

java - 尝试访问字符串数组时出现 ArrayOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 10:50:44 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,当您输入数字时,该程序会输出数字的名称。它对于一位数字来说效果很好,但我遇到了障碍。每当我输入大于 10 的数字时,它都会给出 ArrayOutOfBoundsException。我不太清楚为什么,因为我使用数组的时间不太长。到目前为止,我只编写了输出 20 以内数字名称的代码。这是代码:

package numericname;

import java.util.Scanner;

public class NumericName {

static String[] Ones = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"};
static String[] Mids = {"Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x;
System.out.println("Enter a number");
x = in.nextInt();
if(x/10 <= 1)
ones(x);
if(x/10 > 1 && x/10 < 2)
mids(x);
}

public static void ones(int x) {
System.out.println(Ones[x]);
}

public static void mids(int x) {
x -= 11
System.out.println(Mids[x]);
}
}

我添加了 x - 11 以使数字等于字符串数组中的名称,但它仍然不起作用。我究竟做错了什么?谢谢!

最佳答案

两个问题,都与您是整数除法的受害者有关:

在 Java 中,当您将两个整数相除时,结果是等式的值,截断小数。这意味着小数部分被“截止”。例如:11 / 10 = 1 , 19 / 10 = 1 , 9 / 10 = 0

现在解决问题:

  1. 第一个 if 语句将使任何小于 20 的数字计算结果为 true(因为 19/10 == 1)。

要解决此问题:将其更改为 if (x <= 10)

  • 第二个 if 语句永远为真,因为 x/10 不能小于 2 且大于 1(因为它是整数!)
  • 要解决此问题,请将其更改为:

    • if(x < 20)
    • 或者,if(x / 10 == 1)

    关于java - 尝试访问字符串数组时出现 ArrayOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930491/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com