运行时错误。整数转换为字符串

用户名

我目前正在创建一个程序,该程序返回数字的序数形式(第一,第二等)。但是,当我运行程序时,会出现运行时错误。

我怀疑这与我从int到string的转换有关,但是我似乎找不到问题的根源。

public void run() {
        ordinalform(5);
    }

    private String ordinalform(int num) {
        String number = Integer.toString(num);
        String correctWord ="";
        if((number.charAt(number.length()-2)=='1'
                && number.charAt(number.length()-1)=='1')){
            correctWord=number+"th";
        } else if (number.charAt(number.length()-2)=='1'
                && number.charAt(number.length()-1)=='2') {
            correctWord=number+"th";
        } else if ((number.charAt(number.length()-1)=='1'
                && number.charAt(number.length()-1)=='3')) {
            correctWord=number+"th";
        } else if(number.charAt(number.length()-1)=='1') {
            correctWord=number+"st";
        } else if(number.charAt(number.length()-1)=='2') {
            correctWord=number+"nd";
        } else if(number.charAt(number.length()-1)=='3') {
            correctWord=number+"rd";
        } else {
            correctWord=number+"th";
        }
        println(correctWord);
        return correctWord;
    }
}

错误: Exception in thread "Thread-1" java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.charAt(String.java:646) at StringTraining.ordinalform(StringTraining.java:17) at StringTraining.run(StringTraining.java:11) at acm.program.Program.runHook(Program.java:1568) at acm.program.Program.startRun(Program.java:1557) at acm.program.AppletStarter.run(Program.java:1895) at java.lang.Thread.run(Thread.java:745)

穆罕默德(Mohammed Aouf Zouag)

编辑:

您正在使用数字5作为参数调用您的方法:

ordinalform(5);

ordinalform函数中执行的第一条指令

String number = Integer.toString(num);

这会将变量num(等于5)转换为字符串。现在number等于“ 5”。注意,number.length()现在等于1。

接下来的条件:

if((number.charAt(number.length()-2)=='1' && ....) { }

number.length()等于1(数字==“ 5”)。因此,number.length() - 2将等于-1。因此,从技术上讲,您想要做的是:

if((number.charAt( -1 )=='1' && ....) { }

而且由于没有索引-1之类的东西,StringIndexOutOfBoundsException因此抛出a,执行失败。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数组强制转换为字符串枚举器时发生运行时错误

如何将运行时字符串转换为字符串枚举

如何在Scala的运行时中将字符串转换为符号?

将星号正常运行时间字符串转换为日期

如何在运行时将字符串转换为格式化的字符串文字?

c++ - 将集合转换为向量并将向量转换为字符串时的运行时异常

C字符串裁剪运行时错误

将字符串正常运行时间[d hh:mm]转换为Excel时间值[hh:mm]

将字符串转换为枚举,但是仅在运行时知道枚举类型时

如何在 C# 中在运行时将字符串数学公式转换为 int

使用联合打印字符串时出现运行时错误。它不打印字符串值但打印整数值

将字符串转换为整数时的错误

Python TypeError:脚本独立运行时,字符串索引必须是整数

Java文字字符串:运行时错误的字符集

通过添加值更改字符串中的字符会导致运行时错误

如何将运行时变量替换为c中的字符串?

Python字符串转换为整数

如何从字符串转换为整数

将字符串转换为整数

将整数转换为字符串

当滥用整数变量(通过尝试将字符串存储到该变量中)时,Bash Shell是否有办法引发运行时错误?

为什么在struct中使用字符串时出现运行时错误

为什么这会导致运行时错误?(使用HashMap查找字符串的字数)

Ada字母数字,字符串索引检查失败,运行时错误

`symbolVal` 中的错误类型在运行时获取类型级字符串

每个内部使用字符串时发生运行时错误

读取字符串向量时超出范围运行时错误

运行时错误:浏览#N / A字符串时显示13

运行时错误:乳胶无法处理以下字符串:b'$1.0$'