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

问题是input.next()。由于您需要用户输入的整个字符串,因此您不应使用nextLine()not next()

原因:

next()将空格作为默认分隔符。

nextLine()将 return 作为默认分隔符。

请注意,您的代码中还有其他问题。您可能想打印变量以了解其中存储的内容。

快乐学习!

于 2013-09-20T03:44:46.990 回答
0

在您的代码中,next()将空格作为默认分隔符,使用nextLine()返回作为默认分隔符。顺便说一句,使用下划线(_)之类的自定义运算符来表示整数而不是使用空格。并拆分字符串以获得整数、分子和分母。

于 2013-09-20T04:00:19.247 回答