首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >阵列问题java.lang.ArrayIndexOutOfBoundsException: 9

阵列问题java.lang.ArrayIndexOutOfBoundsException: 9
EN

Stack Overflow用户
提问于 2013-06-01 08:36:40
回答 2查看 11.1K关注 0票数 0

我正在尝试编写一个类,它接受用户以字符串形式输入的电话号码,然后将每个数字存储在一个数组中。我使用Long.parseLong将字符串转换为长整型。下面是一个函数,用于在数组中存储每个单独的数字。

代码语言:javascript
复制
public void storetoarray()
        //Turn the strings to longs
        //A loop chops of the last digit and stores in an array
{
    phonelong = Long.parseLong(initialphone);
    phonetemp1 = phonelong;
    for (int i = phonelength; i>=0; i--)
    {
        phonearray[i-1] = phonetemp1%10;
        phonetemp2 = phonetemp1 - phonetemp1%10;
        phonetemp1 = phonetemp2/10;
        System.out.print("Phone temp 2" + phonetemp2 + phonetemp1);
    }
}

该循环的逻辑是使用%10找到电话号码的最后一个数字,然后从原始电话号码中减去该数字。然后,将该新的差值设置为honetemp1/10。

示例4158884532%10 = 2。它存储在phonearray9中。然后减去phonetemp2得到4158884530。把它除以10得到415888453。应该准备好存储下一个数字。

哪里出了问题?谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2013-06-01 08:46:06

您的phonearray没有足够的空间:您正在访问索引9,但phonearray的元素少于10个。

您需要像这样分配数组:

代码语言:javascript
复制
phonearray = new int[10];

修复此问题后,更改循环以避免访问索引-1 (这就是当i达到零时将发生的情况)。

最后,不需要从phonetemp1中减去phonetemp1%10:整数除法丢弃小数,因此您可以这样做:

代码语言:javascript
复制
phonearray[i-1] = phonetemp1%10;
phonetemp1 /= 10;
票数 0
EN

Stack Overflow用户

发布于 2018-10-30 10:54:44

如果您使用与initialPhone长度相同的大小正确地初始化了数组,则不应该看到此异常。你的代码更愿意生成ArrayIndexOutOfBoundException:-1重写你的代码,并按预期工作:

代码语言:javascript
复制
import java.util.Arrays;

public class TestMain {

  public static void main(String[] args) {

    String initialPhone = "4158884532";
    int phoneLength = initialPhone.length();
    long[] phoneArray = new long[phoneLength];

    Long phoneNum = Long.parseLong(initialPhone);
    Long phonetemp1 = phoneNum;
    for (int i = phoneLength; i > 0; i--) {
      phoneArray[i - 1] = phonetemp1 % 10;
      Long phonetemp2 = phonetemp1 - phonetemp1 % 10;
      phonetemp1 = phonetemp2 / 10;
      System.out.println("Phone temp 2 --> " + phonetemp2 + phonetemp1);
    }
    System.out.println(Arrays.toString(phoneArray));
  }
}

享受吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16867875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档