2016-10-01 3 views
-2

JAVAで分数計算を行い、分数を入力してから演算子を計算し、次の分数を続けます。私は正常に行列と整数のために働いていますが、新しい分数を入力する必要があるたびにその関数をループから呼び出すことができるように分数を入力する関数を作成することはできません。JAVAで分数式を返す方法

これは今のところ働いていますが、入力する小数部を別の関数にして、その関数をさまざまな場面で使用できるようにしたいと思います。

System.out.println("Enter Numerator 1"); 
num1=Integer.parseInt(sc.readLine()); 

System.out.println("Enter Denominator 1"); 
den1=Integer.parseInt(sc.readLine()); 

System.out.println("Enter Numerator 2"); 
num2=Integer.parseInt(sc.readLine()); 

System.out.println("Enter Denominator 2"); 
den2=Integer.parseInt(sc.readLine()); 
+2

理解するための例といくつかのコードを提供できますか? – Vadeg

+0

浮動小数点数を入力から読み取る方法がわからないという問題がありますか? – Vadeg

+0

*あなたは分数を入力するにはどうしますか? 「5/7」として? '2 1/3'?または何? – Andreas

答えて

-1

ここでは、ユーザーに新しい分数を求めることができるFractionクラスの例を示します。

import java.util.Scanner; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Fraction { 
    private final int nom; 
    private final int den; 
    public Fraction(int nom, int den) { 
     if (den <= 0) 
      throw new IllegalArgumentException("Invalid denominator: " + den); 
     this.nom = nom; 
     this.den = den; 
    } 
    public int getNom() { 
     return this.nom; 
    } 
    public int getDen() { 
     return this.den; 
    } 
    @Override 
    public String toString() { 
     return (this.den == 1 ? String.valueOf(this.nom) : this.nom + "/" + this.den); 
    } 

    public static Fraction prompt(Scanner sc, String message) { 
     Pattern p = Pattern.compile("\\s*(?:(?:(\\d+)\\s+)?(\\d+)/)?(\\d+)\\s*"); 
     for (;;) { 
      System.out.print(message + ": "); 
      String line = sc.nextLine(); 
      Matcher m = p.matcher(line); 
      if (m.matches()) { 
       if (m.start(2) == -1) 
        return new Fraction(Integer.parseInt(m.group(3)), 1); // whole number 
       int nom = Integer.parseInt(m.group(2)); 
       int den = Integer.parseInt(m.group(3)); 
       if (m.start(1) != -1) 
        nom += Integer.parseInt(m.group(1)) * den; 
       return new Fraction(nom, den); 
      } 
      System.out.println("** Not a valid fraction. Please enter values like 2/3 or 4 3/7 or 13"); 
     } 
    } 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     for (;;) { 
      Fraction fraction = Fraction.prompt(sc, "Enter value"); 
      if (fraction.getNom() == 0) 
       break; 
      System.out.println("You entered: " + fraction); 
     } 
    } 
} 
+0

クールですが、これらの演算をどのように実行するかは、乗算の例を使って表示できます –

+0

2つの分数をどのように乗算するかを計算で確認し、乗算の結果の「num」と「den」。 – Andreas

+0

Gr8、ありがとうございます –

関連する問題