0

この最初の部分は、1 1/2 のような混合分数を取り、それを 3/2 に変換することになっています。

私が持っているものは以下のとおりです。問題は、実行するとエラーが発生することです。上記のエラーは

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)
    at Calculator.main(Calculator.java:18)

コードは以下から始まります。

import java.util.Scanner;

public class Calculator {

    public static void main(String[] args) {
        // prompt user for fraction string
        // receive and store in variable
        // convert to improper fraction
        //print

        System.out.println("Enter a fraction:"); //prompt for string
        Scanner input = new Scanner(System.in); //Receive

        String fractionAsString = input.next(); //store in variable

        int getSpace = fractionAsString.indexOf('_'); //should fine where java spaces for the initial entering of fractoin

        int getSlash = fractionAsString.indexOf('/'); //should find divisor (like in 1 1/2)

        String firstString= fractionAsString.substring(0, getSpace+1);//converting string to int

        String secondString=fractionAsString.substring(getSpace, getSlash);

        String thirdString=fractionAsString.substring(getSlash+1);

        int wholeNumber=Integer.parseInt(firstString);

        int numerator=Integer.parseInt(secondString);

        int denominator=Integer.parseInt(thirdString);

        int newResult=wholeNumber*denominator;

        int finalResult=numerator+newResult;

        System.out.println(finalResult+"/"+denominator);

        input.close();

    }

}
4

2 に答える 2

0

コードでnext()は、デフォルトの区切り文字としてスペースを使用nextLine()し、デフォルトの区切り文字として return を使用します。ちなみに、スペースを使用する代わりに、アンダースコア(_)などのカスタム演算子を使用して整数を表します。文字列を分割して、wholeNumber、分子、分母を取得します。

于 2013-09-20T04:00:19.247 に答える
0

問題はinput.next(). ユーザーが入力した文字列全体が必要なため、nextLine()notを使用する必要がありnext()ます。

理由:

next()デフォルトの区切り文字としてスペースを取ります。

nextLine()デフォルトの区切り文字として return を取ります。

コードには他にも問題があることに注意してください。変数に何が格納されているかを知るために、変数を出力したい場合があります。

ハッピーラーニング!

于 2013-09-20T03:44:46.990 に答える