Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 课堂作业错误_Java - Fatal编程技术网

Java 课堂作业错误

Java 课堂作业错误,java,Java,我的代码出现错误,我如何着手修复它。基本上,如果字符串中有第二个字符,那么从字符串中提取第二个字符的最佳(入门级)方法是什么 编辑:错误为 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:686) at RomanNumeral.main

我的代码出现错误,我如何着手修复它。基本上,如果字符串中有第二个字符,那么从字符串中提取第二个字符的最佳(入门级)方法是什么

编辑:错误为

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
        String index out of range: 1
    at java.lang.String.charAt(String.java:686)
    at RomanNumeral.main(RomanNumeral.java:38)
我的代码:

import java.util.Scanner;

public class RomanNumeral {

    public static void main(String[] args) {
        // Declare Variable
        int total = 0, length = 0;
        int first;
        int second;
        String romanNumerals;

        // Declare Scanner
        Scanner in = new Scanner(System.in);

        // Get Input
        System.out.println("Please input a Roman Numeral: ");

        romanNumerals = in.next();

        length = romanNumerals.length();

        while (length != 0) {
            first = valueFinder(romanNumerals.charAt(0));

            if (length > 1) {
                second = valueFinder(romanNumerals.charAt(1));
            } else {
                second = 0;
            }

            if (first >= second || length == 1) {
                total += first;
                romanNumerals = romanNumerals.substring(1);
                System.out.println(romanNumerals);
            }// End of if
            else {
                total += (second - first);
                romanNumerals = romanNumerals.substring(2);
                System.out.println(romanNumerals);
            }// End of Else

        }// End of loop
        System.out.println(total);

    }// End of Main Method

    // valueFinder Method

    public static int valueFinder(char numeral) {
        int value = 0;
        switch (numeral) {
            case 'I':
                value = 1;
                break;
            case 'V':
                value = 5;
                break;
            case 'X':
                value = 10;
                break;
            case 'L':
                value = 50;
                break;
            case 'C':
                value = 100;
                break;
            case 'D':
                value = 500;
                break;
            case 'M':
                value = 1000;
                break;
            default:
                System.out.println(numeral 
                                + " is not a Roman Numeral, and will be ignored.");
                break;
        }// End of Switch
        return value;

    }// End of Method

}// End of Class

在获取
罗马数字
的子字符串后,需要更新
长度
变量。字符串本身随着子字符串的增加而变短,但您所指的长度不是。需要时只调用string.length()方法会更简单,因为这样就不需要维护
length
变量


或者,创建另一个方法来修改字符串和长度计数器(将其命名为
subStringAndUpdateLength()
)。但是这太过分了。

在获取
罗马数字的子字符串后,需要更新
长度
变量。字符串本身随着子字符串的增加而变短,但您所指的长度不是。需要时只调用string.length()方法会更简单,因为这样就不需要维护
length
变量


或者,创建另一个方法来修改字符串和长度计数器(将其命名为
subStringAndUpdateLength()
)。但是那太过分了。

你能把错误贴出来吗。。?这会有帮助。@Pnchappy92:我编辑了你的问题以改进格式。仅供将来参考,您可以突出显示问题中的代码块,并使用文本框上方的按钮自动设置代码格式。您是否可以发布错误。。?这会有帮助。@Pnchappy92:我编辑了你的问题以改进格式。仅供将来参考,您可以突出显示问题中的代码块,并使用文本框上方的按钮自动格式化代码。