Моя домашняя работа над благодарением заключается в том, чтобы сделать калькулятор фракций, который принимает ввод, и дает ответ , например 1/2 + 1/4 = 3/4 , но когда я вводим ввод, я получаю ошибку:Ошибка калькулятора Java Fraction
Ошибка Начало: Исключение в потоке «основной» java.lang.Error: Нерешенные проблемы компиляции: метод подстрока (INT) в тип String, не применяется для аргументов (String)
at alex.Fraction.run(Fraction.java:44)
at alex.Fraction.main(Fraction.java:19) error ends
Может кто-нибудь объяснить мне, в чем проблема?
См код ниже:
import java.util.Scanner;
public class Fraction {
public static void main(String[]args){
System.out.println(" enter input");
Scanner console=new Scanner(System.in);
while (true){
String input=console.nextLine();
if(input.equalsIgnoreCase("quit")) {
System.out.println("Goodbye");
}
else {
System.out.println(run(input));
}
}
}public static String run(String input){
int indexOfSecondSpace=0;
int indexOfOperation=0;
String firstNumber="0";
String secondNumber="0";
String operator =input.substring(input.indexOf(" ")+1, input.indexOf(" ", input.indexOf(" ")+1));
if (input.contains("+")==true){
indexOfOperation=input.indexOf("+");
}
else if (operator.equals("-")){
indexOfOperation=input.indexOf("-");
}
else if (operator.equals("*")){
indexOfOperation=input.indexOf("*");
}
else if (operator.equals("/")){
indexOfOperation=input.indexOf("/");
}
else if (operator.equals("^")){
indexOfOperation=input.indexOf("^");
}
firstNumber=(input.substring(0,input.indexOf(" ")));
secondNumber=(input.substring(input.substring(input.indexOf(" ",input.lastIndexOf(" ")+1)+1)));
int a, b, c, d;
a=b=c=d=0;
if (firstNumber.contains("/")){
a=Integer.parseInt(firstNumber.substring(0, firstNumber.indexOf("/")));
b=Integer.parseInt(firstNumber.substring(firstNumber.indexOf("/"), firstNumber.indexOf(" ")));
}
else if (!firstNumber.contains("/"))
a=Integer.parseInt(input.substring(0, input.indexOf(" ")));
b=Integer.parseInt("1");
{
if (secondNumber.contains("/")){
c=Integer.parseInt(secondNumber.substring(secondNumber.indexOf("/")));
d=Integer.parseInt(secondNumber.substring(secondNumber.indexOf("/"+1,secondNumber.length())));
}
else if (!secondNumber.contains("/")){
c=Integer.parseInt(secondNumber.substring(secondNumber.length()));
d=Integer.parseInt("1");
}
}
}
public static String calculate(String input, int a, int b, int c, int d){
if (input.contains ("+"))
{
System.out.println(" answer " + (a*d + b*c)+"/" +(b*d));
}
else if (input.contains("-"))
{
System.out.println(" answer " + (a*d - b*c)+ "/" +(b*d));
}
else if (input.contains("/"))
{
System.out.println(" answer " + (a*d)/(b*c)+ "/" +(b*d));
}
else if (input.contains("*"))
{
System.out.println(" answer " + (a*c) +"/" +(b*d));
}
return input;
}
}
ли Вы, прочитать сообщение об ошибке? 'Метод substring (int) в типе String неприменим для аргументов (String)' –
Вы заметили, что все операции печатаются '/'? – alfasin
@alfasin, вероятно, так, это, кажется, калькулятор рациональных чисел, а 'x/y' - способ написать рациональное число. –