2015-01-09 3 views
-4

У меня есть мой код здесь, который я разместил здесь раньше, и мне помогли раньше. Переменные кажутся неправильными, и я не уверен, почему. Я вошел в долю 1/2 + 3/4, и я получаю ответ 8/4. Я знаю, что это связано с переменными, потому что, когда я запускаю отладчик, он говорит, что «a» = 1, 'b' = 1, 'c' = 4 и 'd' = 4. «a» и «d» верны в том, как я их хочу, переходя от «a» до «d» слева направо. Я думаю, я знаю, где проблема, но я не знаю, как это исправить. Я думаю, что проблема с «Ъ» должен делать с этой строки кодаНеверные переменные; калькулятор фракции; JAVA

b = Integer.parseInt("1"); 

Вот мой полный код

импорт java.util. *;

public class Calculator { 
public static void main(String[] args) { 
System.out.println("Please enter two fractions to add, subtract, multiply, or divide\nor\nType    'quit' to exit the program."); 
Boolean on = true; 
Scanner console = new Scanner(System.in); 
while (on) { 
    String input = console.nextLine(); 
    if (input.equalsIgnoreCase("quit")) { 
     on = false; 
    } else 
     System.out.println(run(input)); 
} 
} 
public static String run(String input) { 
int indexOfSecondSpace = 0; 
int indexOfOperation = 0; 
String firstNumber = "0"; 
String secondNumber = "0"; 
int beginning = input.indexOf(" ") + 1; 
int end = input.indexOf(" ", beginning); 
String operator = input.substring(beginning, end); 
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("/"); 
} 
firstNumber = (input.substring(0, input.indexOf(" "))); 
secondNumber = (input.substring(beginning + 1)); 
int a = 0; 
int b = 0; 
int c = 0; 
int d = 0; 
if (firstNumber.contains("/")) { 
a = Integer.parseInt(firstNumber.substring(0,firstNumber.indexOf("/"))); 
b = Integer.parseInt(firstNumber.substring(0,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("/")+1)); 
    d = Integer.parseInt(secondNumber.substring(secondNumber.indexOf("/")+1)); 
    } else if (!secondNumber.contains("/")) { 
    c = Integer.parseInt(secondNumber.substring(secondNumber.length())); 
    d = Integer.parseInt("1"); 
    } 
} 
String res = calculate(input, a, b, c, d) ; 
return res; 
} 
public static String calculate(String input, int a, int b, int c, int d){ 
if (input.contains ("+")) 
{ 
    System.out.println("your answer is " + (a*d + b*c)+"/" +(b*d)); 
} 
else if (input.contains("-")) 
{ 
    System.out.println("your answer is " + (a*d - b*c)+ "/" +(b*d)); 
} 
else if (input.contains("/")) 
{ 
    System.out.println("your answer is " + (a*d)/(b*c)+ "/" +(b*d)); 
} 
else if (input.contains("*")) 
{ 
    System.out.println("your answer is " + (a*c) +"/" +(b*d)); 
} 
return input; 
} 
} 

ответ

1

Вы следующее в вашем коде

c = Integer.parseInt(secondNumber.substring(secondNumber.indexOf("/")+1)); 
d = Integer.parseInt(secondNumber.substring(secondNumber.indexOf("/")+1)); 

Почему вы ожидали бы с и d имеют разные значения?

Следует также отметить

d = Integer.parseInt("1"); 

Может быть переписано как

d = 1; 
+0

так, как бы я идти вокруг фиксируя это, чтобы сделать его напечатать вывод я хочу его тоже. извините, я по-прежнему новичок в java. помощь приветствуется. благодаря – diy900

Смежные вопросы