publicclassMyClass{publicstaticvoidmain(String[]args){intn1,n2,soma,subt,divs,multi;System.out.println("Digite dois numeros: ");n1=teclado.nextInt;n2=teclado.nextInt;soma=calculasoma(n1,n2);subt=calculasubt(n1,n2);divs=calculadiv(n1,n2);multi=calculamulti(n1,n2);System.out.println(soma);System.out.println(subt);System.out.println(divs);System.out.println(multi);}staticintcalculasoma(intn1,n2){intsoma;soma=n1+n2;returnsoma;}staticintcalculasubt(intn1,n2){intsubt;subt=n1-n2;returnsubt;}staticintcalculadivs(intn1,n2){intdivs;divs=n1/n2;returndivs;}staticintcalculamulti(intn1,n2){intmulti;multi=n1*n2;returnmulti;}}
ele deve ter posto os métodos na mesma classe onde esta o método main e chamado eles ali mesmo.
M
Miguel_Avila1 like
Seu código tinha bastante coisa errada, vou tentar pontuar para voce ver:
packagetest;importjava.util.Scanner;//não tinha importado a classe java.util.ScannerpublicclassMyClass{publicstaticvoidmain(String[]args){Scannerteclado=newScanner(System.in);//faltou criar a variavel de referencia teclado.intn1,n2,soma,subt,divs,multi;System.out.println("Digite dois numeros: ");n1=teclado.nextInt();//*n2=teclado.nextInt();//esses dois métodos estavam sem o () no finalsoma=calculasoma(n1,n2);subt=calculasubt(n1,n2);divs=calculadivs(n1,n2);multi=calculamulti(n1,n2);System.out.println(soma);System.out.println(subt);System.out.println(divs);System.out.println(multi);}publicstaticintcalculasoma(intn1,intn2){intsoma;soma=n1+n2;returnsoma;}publicstaticintcalculasubt(intn1,intn2){intsubt;subt=n1-n2;returnsubt;}staticintcalculadivs(intn1,intn2){intdivs;divs=n1/n2;returndivs;}staticintcalculamulti(intn1,intn2){intmulti;multi=n1*n2;returnmulti;}}// tambem faltou colocar o tipo do parametro n2 em todos os métodos.
Se não me engano é só isso. Espero ter ajudado
I
Solucao aceita
Iohannes1 like
Reescrevendo…
importjava.util.Scanner;publicclassMyClass{publicstaticvoidmain(String[]args){intnumero1;intnumero2;/*int soma; int diferenca; int produto; float quociente;*/Scannerleitor=newScanner(System.in);MyClassmyClass=newMyClass();System.out.print("Informe o primeiro número: ");numero1=leitor.nextInt();System.out.print("Informe o segundo número: ");numero2=leitor.nextInt();/*soma = myClass.calcularSoma(numero1. numero2); diferenca = myClass.calcularDiferenca(numero1, numero2); produto = myClass.calcularProduto(numero1, numero2); quociente = myClass.calcularQuociente(numero1, numero2);*/System.out.println("Soma: "+myClass.calcularSoma(numero1,numero2));System.out.println("Diferença: "+myClass.calcularDiferenca(numero1,numero2));System.out.println("Produto: "+myClass.calcularProduto(numero1,numero2));System.out.println("Quociente: "+myClass.calcularQuociente(numero1,numero2));}/*Exemplo com varargs*/privateintcalcularSoma(int...parcela){returnparcela[0]+parcela[1];}privateintcalcularDiferenca(intminuendo,intsubtraendo){returnminuendo-subtraendo;}/*Exemplo com varargs*/privateintcalcularProduto(int...fator){returnfator[0]*fator[1];}privatefloatcalcularQuociente(intdividendo,intdivisor){return(float)dividendo/(float)divisor;}}
Testando…
I
Iohannes1 like
Não é muito recomendada essa abordagem de tornar tudo estático. Semanticamente, no Java, método estáticos pertencem à classe e não às instâncias da classe (objeto).
M
Miguel_Avila1 like
Ss, no caso se não me engano o mais correto seria a criação de uma classe separada, e a alocação dos métodos lá, e a chamada deles em outra classe que teria o método main. É tipo aquele conceito que diz pra deixar cada classe com um “trabalho”. Esse conceito: Coesão está ligado ao princípio da responsabilidade única, que foi introduzido por Robert C. Martin no inicio dos anos 2000 e diz que uma classe deve ter apenas uma única responsabilidade e realizá-la de maneira satisfatória, ou seja, uma classe não deve assumir responsabilidades que não são suas.
I
Iohannes
A classe tem o SRP que é efetuar cálculos (o mais correto seria que ela se chamasse Calculadora em vez de MyClass). Nada impede que o main seja chamado nela. Se não fosse assim, nas classes que estendem o JFrame, o método main não poderia estar presente, mas em qualquer IDE, cada classe que estende o JFrame tem o seu método main correspondente (quando a tela é montada via drag and drop).
Não entendi a expressão alocação… dos métodos? Não seria mais adequado os termos “chamar” ou “invocar” os métodos?
M
Miguel_Avila
não foi isso que quis dizer, na verdade falei pra ele deixar os métodos em uma classe separada e não estaticos na mesma classe do main. dai vem a alocação dos métodos em outra classe para chamalos dessa classe onde estão para a classe onde está o main por meio de um objeto. ex:
-> assim é bem melhor que alocar os métodos e atributos na mesma classe do main e ainda deixa seu sistema coeso. Uma classe so pra rodar o códigos e as outras classes com outras tarefas.