question

Simplificando fracoes em java?

Eu não tenho idéia como fazer a matemática, nem a programação para esta parte de uma atribuição de programação tenho recebido. Aqui está o meu código para os "insturctions" do programa, se você quiser chamá-lo que. Eu sei que a função de simplificar é errada, que eu só preciso saber como corrigi-lo. Muito obrigado!

pacote FractionGame;


classe pública {fração
Private int nm; //initializes private int variável que representa o numerador
Private int dm; //initializes private int variável que representa o denominador

//Constructors-

//Default Constuctor
Fraction(){this(0,0) pública;}
//Constructor com ambos os parâmetros
Fração pública (int i, int j) {
nm = i;
DM = j;
}
//Copy Construtor
público Fraction(Fraction a) {
this.nm=a.nm;
this.dm=a.dm;
}


//Functions

//addTo
pública fração addTo(Fraction x) {
int newNm=(nmx.getDem())+(x.getNum()x.getDem());
int newDm=dmx.getDem();
Bebê de fração = Fraction() novo;
baby.setNum(newNm);
baby.setDem(newDm);
Baby.Simplify();
retornar o bebê;
}
//multiplyBy
pública fração multBy(Fraction x) {
int newNm=(nmx.getNum());
int newDm=(dmx.getDem());
Bebê de fração = Fraction() novo;
baby.setNum(newNm);
baby.setDem(newDm);
Baby.Simplify();
retornar o bebê;
}
//Simplify
{public void simplify()
para (int i = nm; i > = 1; i-)
If(nm%i==0) {
nm = nm / i;
DM = dm / i;
}
}
//isEqualTo
{public boolean isEqualTo(Fraction x)
b booleano;
herp=(double)x.getNum()/(double)x.getDem() duplo;
derp duplo = nm (duplo) (dobro) dm;
If(HERP==DERP)
b = true;
outra coisa
b = false;
retornar b;
}
//ToString
public String ToString () {
String s;
s = nm + "/" + dm;
retorno s;
}


//Accessors
public int getNum() {retorno nm;}//Retrieves o numerador de uma fração
public int getDem() {retorno dm;}//Retrieves o denominador da fração


//Mutators-
public void setNum (int n) {nm = n;}//Changes o numerador de uma fração de algo novo
public void setDem (int d) {dm = d;}//Changes o denominador de uma fração de algo novo
} Obrigado pelo feedback, isso funciona? http://pastebin.com/qi5PiaTP agradecer a vocês pela ajuda, mas quando eu executá-lo, a adição é sempre errada, o mulitiplication está certo. tão confuso
resposta Resposta
Não olhar para o resto do código realmente, mas to corrigir "simplificar" eu faria: public void simplify() {para (int eu = nm; i > = 1; i) {//You deixou-se de uma chave de abertura no final do loop se (nm % i = = 0 && dm % i = = 0) {//Check todos os números que vai dividir uniformemente em fração nm = nm / i; dm = dm / i;}}

Notei também algumas muito redundante do código (que não tenha sido intencional) f(herp==derp) b = true; b outra coisa = false; retornar b;

Pode ser herp retorno = = derp atualização: para corrigir seu método AdicionarPara, eu mudei para: pública fração addTo(Fraction x) {int newNm=(nmx.getDem())+(dmx.getNum()); multiplicação de //Cross foi feita errado int newDm=dmx.getDem(); //Denominator é sempre dois multiplicaram bebê fração = fração de nova (newNm, newDm); //Constructor optimamente utilizados baby.simplify(); retorno bebê;}

Ao escrever esses tipos de métodos, sempre acho que através da lógica de como fazer isso usando um problema de amostra (neste caso eu usei as frações 5/10 e 2/5 e fiz as contas e, em seguida, substituiu os números com variáveis apropriadas que realmente ajuda). Eu também recomendo comentando seções de matemáticas, onde você pode complicar-se, para que você saiba o que você planeja fazer logicamente (ESP. Quando você se levanta fazer outra coisa e voltar mais tarde).

ComentáriosComentários
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved