为什么我的 int[] 数组循环越界?

2023-12-08

Warning: 我对 Java 和一般编程非常陌生。我会尽量说得清楚。

我正在尝试取一个简单的整数(inputnumber),将其转换为字符串(temp),创建一个新的 int[] 数组(numberarray),并从最后一位数字开始循环遍历这个 int[] 数组,并打印出该数字的名称。

我相当确定,由于 Eclipse 调试,从整数到字符串再到 int[] 数组的转换是有效的,但我很困惑为什么我会从 Eclipse 收到如此简单的 for 循环的 ArrayOutOfBounds 消息。任何有关我做错了什么的线索都会受到赞赏。

    String temp = inputnumber.toString();
    int[] numberarray = new int[temp.length()];

    for (int i=0;i<temp.length();i++) {
        numberarray[i] = temp.charAt(i);
    }


    for (int i=temp.length();i>0;i--) {

        if (numberarray[i]==1) System.out.print("one.");
        if (numberarray[i]==2) System.out.print("two.");
        if (numberarray[i]==3) System.out.print("three.");
        if (numberarray[i]==4) System.out.print("four.");
        if (numberarray[i]==5) System.out.print("five.");
        if (numberarray[i]==6) System.out.print("six.");
        if (numberarray[i]==7) System.out.print("seven.");
        if (numberarray[i]==8) System.out.print("eight.");
        if (numberarray[i]==9) System.out.print("nine.");
        if (numberarray[i]==0) System.out.print("zero");
    }

我收到的 Eclipse 错误消息是:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at jt.Intermediate8.main(Intermediate8.java:44)

Java 中的数组是从 0 索引的。这意味着最后一个值位于索引处NUMBER_OF_ELEMENTS - 1

因此,在你的for循环,你应该改变

int i=temp.length()     // this is last index + 1 (since we are starting from 0)

To:

int i=temp.length() - 1 // this is last index

另外,如@brso05说,不要忘记将循环结束条件更改为i>=0因为向后移动的最后一个值将位于索引 0 处。

Your for loop:

for (int i = temp.length(); i >= 0; i--)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 int[] 数组循环越界? 的相关文章

随机推荐

  • C 风格语言中匿名 { } 块的用途是什么?

    C 风格语言 C C C 中匿名 块的用途是什么 例子 void function int i 0 i i 1 int k 0 k k 1 Edit 感谢所有精彩的回答 它将变量的范围限制在 内的块内
  • 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException [重复]

    这个问题在这里已经有答案了 我是编程新手 在 eclipse 中运行一些新代码时 我遇到了这个错误 并且完全迷失了 import java util Scanner public class Lab6 public static void
  • 如何修复 gpflow 中内核长度尺度的某些尺寸?

    我有一个 2d 内核 k gpflow kernels RBF lengthscales 24 5 1e 5 m gpflow models GPR data X Y kernel k mean function None 我想修复第二维的
  • 定义调用约定的意义何在?

    例如 int WINAPI WinMain HINSTANCE instance HINSTANCE prev instance PSTR cmd line int cmd show WINAPI 是一个如下所示的定义 define WIN
  • 部署Python程序出现问题(用py2exe打包)

    我有一个问题 我的程序使用了 py2exe 它在我的计算机上运行 我用 Inno Setup 打包它 仍然可以在我的计算机上运行 但是当我将它发送到另一台计算机时 尝试运行该应用程序时出现以下错误 CreateProcess 失败 代码 1
  • utf-8字符不显示在chrome中[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 html 特殊字符在 chrome 中无法正确显示的问题请参见 示例页面 我已经检查并重新保存了项目中的每个文件 因为 utf 8 确认了我的元标记减速 并确认 chrome 设置为默认为
  • 将数组放入 class.property

    我有一个具有以下属性的类 Dim pBonds as string Private Property Get Bonds As String Bonds pBonds End Property Private Property Get Bo
  • 如何检查用户输入是否是字符串

    我有两个用户输入 在第一个用户必须插入字符串类型的文本 在第二个用户必须插入 int 类型的数字 我使用了 try except ValueError 因此用户无法在需要 int 的地方插入字符串 尽管当用户在需要字符串的地方插入 int
  • 将 TensorBoard 2 中的 2 个图与 TensorFlow 2 合并

    我想使用 Tensorflow 和 Tensorboard V2 将精度和召回率合并到同一个图上 我找到了许多以前版本的示例 但没有一个适用于我的情况 我创建了一个 Keras 回调来计算精度和召回率 然后调用张量流摘要将它们记录在同一个记
  • ARKit – 在不可见平面下渲染 3D 对象

    我有一个带有隐形物体的 ARKit 场景SCNPlane plane geometry firstMaterial colorBufferWriteMask 该平面放置在地面上 用于渲染deferred shadows来自放置在场景中的其他
  • #define 变量的类型

    如果我有 define MAXLINE 5000 MAXLINE 理解为什么类型 我应该假设它是一个int 我可以以某种方式测试它吗 一般来说 如何判断某一种类型 defineed 变量 它没有类型 这是一个简单的文本替换 文本 5000
  • Terraform 远程状态 s3 存储桶创建包含在状态文件中吗?

    我正在寻找在 S3 存储桶中创建和存储状态文件的最佳实践 我应该将 S3 存储桶的创建与基础设施一起包括在内还是 为其 S3 存储桶创建一个单独的状态文件 并为资源创建一个不同的状态文件 如果它是不同的文件 我还需要存储创建的 s3 存储桶
  • Apache Spark - foreach 与 foreachPartition 何时使用 什么?

    我想知道是否foreachPartition与foreach方法考虑到我正在流过的情况RDD为了对累加器变量执行一些求和 foreach and foreachPartitions是行动 foreach 函数 单位 用于调用具有副作用的操作
  • Objective C - iOS - 在 webViewDidFinishLoad 执行过程中调用 Dealloc

    我在 ios 中遇到内存管理问题 问题是 当我将一个具有 webView 的 viewController 推送到导航堆栈时 当我在加载 webview 之前单击返回时 我得到了 exec bad access 在 A 类 中 我创建一个新
  • 获取资源文件夹中的文件列表 - iOS

    假设我的 iPhone 应用程序的 资源 文件夹中有一个名为 文档 的文件夹 有没有一种方法可以在运行时获取该文件夹中包含的所有文件的数组或某种类型的列表 所以 在代码中 它看起来像 NSMutableArray myFiles get a
  • 如何结合 SELECT DISTINCT 和 SUM()

    我在 Oracle 中有一个如下所示的表 Products Product ID Product NME Product SUP Quantity 1 Apple USA 100 2 Fish Japan 50 3 Wine Italy 1
  • 如何改变 django 模型中 unique true 的行为?

    这里我没有从数据库中删除模型对象 我只是改变is deleted删除时状态为 True 但在这样做的同时unique True对于已删除的对象给出错误 那么我该如何处理这个问题 我想排除is deleted True来自唯一 True 的对
  • TStringGrid - OnMouseUp 未被调用!

    我在 Delphi 7 中的 TStringGrid 有一个奇怪的行为 如果弹出菜单与网格关联 Delphi 不会调用 OnMouseUp 事件 基本上 当按下人民币时 菜单的弹出会以某种方式取消 延迟 OnMouseUp 实际上 为了 1
  • 如何执行存储在 varchar 变量中的数学表达式

    我的数据库函数中有一个变量 LocalVariable 2 3 100 我想通过执行另一个变量中的表达式来获得结果 有人可以建议如何执行该表达式吗 另外 我想在数据库函数中 而不是在存储过程中 执行此操作 我期望的结果是 600 DECLA
  • 为什么我的 int[] 数组循环越界?

    Warning 我对 Java 和一般编程非常陌生 我会尽量说得清楚 我正在尝试取一个简单的整数 inputnumber 将其转换为字符串 temp 创建一个新的 int 数组 numberarray 并从最后一位数字开始循环遍历这个 in