O código mostra o seguinte erro e não sei com resolver:
/MyClass.java:17: error: expected
static int calculasoma(int n1,n2){
^
/MyClass.java:23: error: expected
static int calculasubt(int n1,n2){
^
/MyClass.java:28: error: expected
static int calculadivs(int n1,n2){
^
/MyClass.java:33: error: expected
static int calculamulti(int n1,n2){
^
4 errors
Este é o código:
public class MyClass {
public static void main(String[] args){
int n1, 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);
}
static int calculasoma(int n1,n2){
int soma;
soma = n1 + n2;
return soma;
}
static int calculasubt(int n1,n2){
int subt;
subt = n1 - n2;
return subt;
}
static int calculadivs(int n1,n2){
int divs;
divs = n1 / n2;
return divs;
}
static int calculamulti(int n1,n2){
int multi;
multi = n1 * n2;
return multi;
}
}
Seu código tinha bastante coisa errada, vou tentar pontuar para voce ver:
package test;
import java.util.Scanner; //não tinha importado a classe java.util.Scanner
public class MyClass {
public static void main(String[] args){
Scanner teclado = new Scanner(System.in); //faltou criar a variavel de referencia teclado.
int n1, 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 final
soma = 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);
}
public static int calculasoma(int n1, int n2){
int soma;
soma = n1 + n2;
return soma;
}
public static int calculasubt(int n1, int n2){
int subt;
subt = n1 - n2;
return subt;
}
static int calculadivs(int n1, int n2){
int divs;
divs = n1 / n2;
return divs;
}
static int calculamulti(int n1, int n2){
int multi;
multi = n1 * n2;
return multi;
}
} // tambem faltou colocar o tipo do parametro n2 em todos os métodos.
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).
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.
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?
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:
NovaClasse classe = new NovaClasse();
int a = 1;
int b = 2;
System.out.print(classe.calcularDiferenca(a, b));
-> 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.