2015-11-08 16 views
0

我正在嘗試使用我爲我正在開發的課程開發的計算器將不正確的分數轉換爲混合分數。我被困在如何解決這個問題上。這是我的代碼。任何幫助將不勝感激如何使用java將不正確的分數轉換爲混合分數

package fractioncalc; 

import java.util.Scanner; 
public class fractioncalc2 { 
    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     System.out.println("Please input your equation"); 

     String input = scan.nextLine().replaceAll(" ", ""); 
     System.out.println(input); 
     boolean add = input.contains("+"); 
     boolean sub = input.contains("-"); 
     boolean multi = input.contains("*"); 

    //add 
    if (add) { 
     String Nume1 = input.substring(0,input.indexOf("/")); 
     String Demo1 = input.substring(input.indexOf("/") + 1, input.indexOf("+")); 
     System.out.println(Demo1); 
     String Nume2 = input.substring(input.indexOf("+") + 1,input.lastIndexOf("/")); 
     String Demo2 = input.substring(input.lastIndexOf("/") + 1, input.length()); 

     int num1 = Integer.parseInt(Nume1); 
     int den1 = Integer.parseInt(Demo1); 
     int num2 = Integer.parseInt(Nume2); 
     int den2 = Integer.parseInt(Demo2); 
     int numans = (num1*den2+num2*den1); 
     int denans = (den1*den2); 

     System.out.println("your answer is" + numans + "/" + denans); 
     } 


    //subtract 
    else if (sub) { 
     String Nume1 = input.substring(0,input.indexOf("/")); 
     String Demo1 = input.substring(input.indexOf("/") + 1, input.indexOf("-")); 
     String Nume2 = input.substring(input.indexOf("-") + 1,input.lastIndexOf("/")); 
     String Demo2 = input.substring(input.lastIndexOf("/") + 1, input.length()); 

     int num1 = Integer.parseInt(Nume1); 
     int den1 = Integer.parseInt(Demo1); 
     int num2 = Integer.parseInt(Nume2); 
     int den2 = Integer.parseInt(Demo2); 
     int numans = (num1*den2-num2*den1); 
     int denans = (den1*den2); 

     System.out.println("your answer is" + numans + "/" + denans); 
     } 


    //multiply 
    else if (multi) { 
     String Nume1 = input.substring(0,input.indexOf("/")); 
     String Demo1 = input.substring(input.indexOf("/") + 1, input.indexOf("*")); 
     String Nume2 = input.substring(input.indexOf("*") + 1,input.lastIndexOf("/")); 
     String Demo2 = input.substring(input.lastIndexOf("/") + 1, input.length()); 

     int num1 = Integer.parseInt(Nume1); 
     int den1 = Integer.parseInt(Demo1); 
     int num2 = Integer.parseInt(Nume2); 
     int den2 = Integer.parseInt(Demo2); 
     int numans = (num1*den2*num2*den1); 
     int denans = (den1*den2); 

     System.out.println("your answer is" + numans + "/" + denans); 
     } 


    //divide 
    else { 
     String b = input.substring(0, input.lastIndexOf("/")); 
     String c = input.substring(input.indexOf("/")+1); 
     String Nume1 = b.substring(0,input.indexOf("/")); 
     String Demo1 = b.substring(input.indexOf("/") + 1, input.lastIndexOf("/")-2); 
     String Nume2 = c.substring(input.indexOf("/") + 1,input.lastIndexOf("/")-2); 
     String Demo2 = c.substring(input.lastIndexOf("/") - 1); 

     int num1 = Integer.parseInt(Nume1); 
     int den1 = Integer.parseInt(Demo1); 
     int num2 = Integer.parseInt(Nume2); 
     int den2 = Integer.parseInt(Demo2); 
     int numans = (num1*den2); 
     int denans = (den1*num2); 

     System.out.println("your answer is: " + numans + "/" + denans); 

    } 
    } 
} 
+0

歡迎來到Stack Overflow!你的問題缺乏最重要的部分 - **確切的問題**你需要幫助。沒有它,它只是一個在這裏非常不喜歡的作業轉儲,可能會很快關閉。 –

+0

檢查了這一點 http://stackoverflow.com/questions/33590220/my-java-fraction-calculator-refuses-to-cooperate-with-me/33590740#33590740 需要輸入作爲1_2/3 + 5_2/5 這有點類似於你的問題。 – Doc

回答

-1

考慮混合部分有兩部分:一個整數和一個分數。整數是numerator整體擬合到denominator的次數(這是numerator/denominator的地形值)。分數的分子是該除法的餘數,分母不會改變。

因此,該算法是(僞):

Whole = Floor(Numerator/Denominator) 
Part = Numerator % Denominator 
Print(Whole + " " + Numerator + "/" + Denominator) 

注意這裏使用的%符號。這被稱爲模(modulo),並且表示這兩個數的除法的其餘部分。 Java使用相同的符號。

對於Floor的實現,請查看Java Math類。

+0

分子和分母都是'int',所以你不需要'floor'。 –

+0

另外,'floor'會給你負分數的不正確答案。所以這個答案在技術上是不正確的。 –

相關問題