Sinceramente, nao. convert O QUE pra ATM? Um ‘int scale’? Ahh… erhm… :?
Qual o problema com:
Bar bar = new Bar("100");
Atm atm = bar.toAtm();
Hein? Hein?
Sinceramente, nao. convert O QUE pra ATM? Um ‘int scale’? Ahh… erhm… :?
Qual o problema com:
Bar bar = new Bar("100");
Atm atm = bar.toAtm();
Hein? Hein?
Cv, tópicos atrás vc viu q eu estava fazendo convertATMtoBar(double atm), blalbla dentro de uma classe de unidade física afim(Pressão,Energia…).
Da forma que vc fez(via construtor), tb não ajuda muito, pois poderá me retornar um número de 20 dígitos na casa decimal, o que pode ser desnecessário para muitos.Por isso a escala.
E eu não tenho problemas com CONSTRUTORES!!! :?
No fundo eu fazia assim:
public class Energy implements Energizable{
BigDecimal convertWattToJoule(double watt)
//retorna um parâmetro muuuito grande
BigDecimal convertWattToJoule(double watt,int scale)
//retorna com o num de casas que o usuário quer
}
onde Energizable é a interface com as constantes!
Cara, não seria interessante eu permitir q se faça uma inportação estática da classe para depois fazer só uma chamada do método q eu pretendo utilizar na minha classe?(Igual aos métodos da classe Math)
E eu vou mudar o nome das interfaces…(antes q reclame!)
Eu não tenho nada contra construtores, mas vc gastou 2 linhas para algo q poderia se restringir a uma chamada de método!(Tah, eu sei q otimização prematura é a raiz do mal…)
Quem deveria se preocupar com a precisão do número é o usuário, não?
Pelo menos no mundo real é assim, as calculadoras retornam números com muitas casas decimais e quem tá fazendo a conta é quem faz o arredondamento, seguindo alguns critérios de algarismos significativos. (Outra coisa que poderia ser implementada)
Exatamente - otimizacao prematura, nesse caso, ta jogando fora a legibilidade e expressividade do seu codigo. Compare:
Pint p = new Litre("0.568261485").toPint();
assertEquals(1, p.intValue());
Versus:
int p = Volume.convertLitreToPint(0.568261485);
assertEquals(1, p);
No primeiro trecho, a pergunta “o que eh ‘p’?” eh respondida com MUITO mais facilidade, e a conversao pelo metodo toPint() eh bem obvia - voce sabe que esta convertendo um valor do tipo Litre pra outro valor do tipo Pint. O compilador pega as bobeadas pra voce, e desse jeito fica simplesmente impossivel fazer cagadas do tipo:
int width = getWidthInInches();
int pints = Volume.convertLitreToPint(width);
Tendo isto em mente, vejamos de novo a sua afirmacao:
“Por isso a escala o que”, cara palida? Voce esta confundindo a logica de representacao (e eh pra ela que temos DecimalFormat) com os dados, em si. Distorcer o ultimo pra favorecer o primeiro so tem uma consequencia: merda.
Na minha sugestao, isso nem sequer entra em questao - ja que Pint e Litre sao filhas de BigDecimal, e essa ja tem um construtor bacana que pega a escala - e que, se eu entendi direito, nao eh a mesma escala de que vc esta falando. Fica faltando escrever uma classe que estenda DecimalFormat, e apresente as coisas de uma maneira bonitinha.
6 taum ligado data em java…
Um classe é a data, outra faz matemática com a data e outra serve pra imprimir a data…
Não chega a ser uma abordagem de todo ruim, ou chega?
VELO
Cv, agora eu realmente saquei o q vc disse!(UFA! :lol: )
damn…mais uma vez os testes!Ahhhh!!!Por isso não visualizava o q vc queria dizer!
É esse mesmo!Só que com o ROUND_HALF_UP!!
setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
Esqueci da herança… :roll:
Esuqce DecimalFormat.Deixe ele para currency.Da forma q vc mostrou jah tah beem claro!
Velo, foi mal não responder antes(os tópicos estão big…)!A licença é LGPL, tb conhecida como PEF(Pegue-E-F!), não vejo pq os projetos serem tão frescos com esse lance de licenças…
Velo, o smota tinha dado umas idéias interessantes para Data, e acho q o Fernando(Scottys) tinha pensado em algo tb, mas não temos nada estruturado no assunto!Se a DATA for algo tão crucial, criaremos um pack para ela, e subdividimos por requisito/necessidade como vc falou.
Na verdade eu tava fazendo uma analogia a como o java trata a data com o q o CV tava falando…
VELO
Mudando um pouco o assunto… eu fiz uma classe para validação de título eleitoral. Copiei certinho de uma função que tinha em delphi, mas algo não está dando certo. Suspeito que seja a diferença do início dos vetores que em delphi iniciam em 1 (geranmente) bem como o primeiro caractere das strings. Isso pq o dígito que deveria dar 88 dá 87. Pode ser só coencidência ou não. Se alguém puder testar com o seupróprio Tílulo seria bom um feedback. Vou postar só o método de validação:
public static boolean isValid(String tituloEleitoral){
if (tituloEleitoral == null) return false;
String n = tituloEleitoral.replaceAll("[^0-9]*","");
if (n.length() != DIGIT_COUNT) return false;
int i; // just count
int[] coeficients = {10,9,8,7,6,5,4,3,2,4,3}; // Coeficients
int digit; // A number digit
int sum; // The sum of (Digit * Coeficient)
int foundDv=0; // The found Dv (Chek Digit)
int aux = Integer.parseInt(""+n.charAt(9)+n.charAt(10));
int dv = Integer.parseInt(""+n.charAt(11)+n.charAt(12));
sum = 0;
for (i = 0; i < DIGIT_COUNT - 2 /*-2 Digits*/; i++){
digit = Integer.parseInt(String.valueOf(n.charAt(i)));
sum += digit * coeficients[i];
if ( i >= 8 && i <= 10){ // Pos 8, 9 and 10
sum = sum % 11;
if (sum > 1){
sum = 11 - sum;
} else {
if (aux <= 2)
sum = 1 - sum;
else
sum = 0;
} // if (sum > 1){
if (i == 8)
foundDv = sum * 10;
else
foundDv = foundDv + sum;
sum = sum * 2;
}
}
System.out.println("Dv:" + dv + " FoundDV:" + foundDv );
return dv == foundDv;
}
Onde esta o TestCase?
Rafael
Pra postar o testcase todo teria que colocar a classe tb. O probleme definitivamente está neste método. Veja que no final ele mostra o dv e o dv calculado. Se não é igual ali nem adiante tentar ver o test case. O método é que está dando pau.
EDITADO:
Já resolvi, na função em Delphi tinha um
if i in [9,11]
isso significa se for 9 OU 11 eu coloquei como sendo ENTRE 9 e 11 !!! :x
Opa, conforme colocado na lista, vou fazer a classe que coloca a data por extenso blz?
Com dia da semana, dia do mes, mês e ano por extenso. Tá bom?
Só confirma e eu saio codando…
Abraço
[quote=Igor_Barros]Opa, conforme colocado na lista, vou fazer a classe que coloca a data por extenso blz?
Com dia da semana, dia do mes, mês e ano por extenso. Tá bom?
Só confirma e eu saio codando…
Abraço[/quote]
É toda sua. Por enquanto coloque no pacote org.brazilutils.utilities.
Bom, voces podem simplesmente mandar o link para o arquivo no cvs
Rafael
Pessoal, boa parte das classes do pacote br eram números com alguma máscara. Assim elas implementavam uma interface NumberComposed. Andei dando uma enxugada no código e percebi que da forma como está essa interface só ocupa espaço. A única função dela era padronizar os métodos de saída de valor(getValue() e getNumber()). exemplo:
Cep cep = new Cep();
cep.setCep("12.345-567");
System.out.println(cep.getValue()); // retorna "12.345-678"
System.out.println(cep.getNumber()); // retorna "12345678"
CpfCnpj cpfCnpj = new CpfCnpj();
cpfCnpj.setCfpCnpj("123.456.789-00");
System.out.println(cpfCnpj.getValue()); // retorna "123.456.789-00"
System.out.println(cpfCnpj.getNumber()); // retorna "12345678900"
A questão é: para dar entrada o método é setCoisa() e para saída é getNumber() e getValue(), estava pensando em detonar de vez a Interface NumberComposed e trocar getValue() por getCoisa() (retorno formatado) e trocar getNumber() por getCoisaNoMask() / getRawCoisa() / getCoisaUnformatted() / getCoisaDigits() ou algo assim.
O que me sugerem?
getNumber e getValor tah londe de ser uma coisa intuitiva…
VELO
Tem planejado alguma coisa pra incluir uma classe que calcule area e volume de objetos geometricos? Ou o java tem isso de série?
VELO
[quote=velo]getNumber e getValor tah londe de ser uma coisa intuitiva…
VELO[/quote]
Pois é, estava pensando em usar getCoisa() no lugar de getValue(), mas como chamo o método que retorna só os dígitos sem formatação?
Quanto ás áreas e volumes acho que existe uma API pronta.
[quote=dsiviotti][quote=velo]getNumber e getValor tah londe de ser uma coisa intuitiva…
VELO[/quote]
Pois é, estava pensando em usar getCoisa() no lugar de getValue(), mas como chamo o método que retorna só os dígitos sem formatação?[/quote]
getCoisaFormatada + getCoisa?
[quote=velo][quote=dsiviotti][quote=velo]getNumber e getValor tah londe de ser uma coisa intuitiva…
VELO[/quote]
Pois é, estava pensando em usar getCoisa() no lugar de getValue(), mas como chamo o método que retorna só os dígitos sem formatação?[/quote]
getCoisaFormatada + getCoisa?[/quote]
É em portugues ou ingles?
getCoisa ou buscaCoisa?
Ta ficando estranho. E o que é essa tal de coisa?
]['s