这个初始部分应该采用像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();
}
}
答案 0 :(得分:0)
问题是input.next()
。由于您需要用户输入的整个字符串,因此您应使用nextLine()
而不是next()
。
原因:
next()
将空格作为默认分隔符。
nextLine()
将返回作为默认分隔符。
警告您的代码中还有其他问题。您可能希望打印变量以了解存储在其中的内容。
快乐学习!
答案 1 :(得分:0)
在您的代码中,next()
将空格作为默认分隔符,使用nextLine()
作为默认分隔符返回。顺便说一下,使用像下划线(_)这样的自定义运算符来表示整数而不是使用空格。并拆分字符串以获得整数,分子和分母。