Ir ao conteúdo

Erro no programa


Fanatico

Posts recomendados

Postado

galera, eu fiz esse programa (trabalho da facul) mais estou com alguns erros, e nao consigo de jeito algum arrumar.

import java.util.Scanner;
public class Triangulo {
public class Perimetro {
int a,b,c;
int perimetro=(a+b+c);
}
public class Lados {
int a,b;
public int lado =(a+;
}
public class área {
int a,b;
int área= ((a*b)/2);
}
public class Classificacao {
int a,b,c,x;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner (System.in);
System.out.print("Altura=");
int a= sc.nextInt();
System.out.print("Base=");
int b= sc.nextInt();
System.out.print("Lado=");
int c= sc.nextInt();
int a1= new.Classificacao (a,b,c); >>>> essa linha
if (a={ >>>> essa linha
if (a=c){
System.out.print("Equilátero");
else
System.out.print("Isósceles");
}
else
if (b=c){
System.out.print("Isósceles");
else >>>> essa linha
System.out.print("Escaleno");
}
}
int a2 = new.área (a,b,x); >>>> essa linha
System.out.println("área =",a2);
int a3 = new.Perimetro (a,b,c,perimetro); >>>> essa linha
System.out.println("Perimetro =",a3);
int a4 = new.Lados (a,b,lados); >>>> essa linha
System.out.println("Soma de 2 Lados =",a4);
}
}

  • Membro VIP
Postado

Amigo, dei uma olhada no seu código, corrigi e não encontrei erros apenas nessas linhas. Talvez a sua IDE tenha exibido apenas essas 4 linhas, mas há alguns erros que observei aqui e vou listá-los:

1- Nenhuma das classes que você criou possui construtor, o que não está errado, contudo para o efeito desejado isso não funciona. Por exemplo, ao criar um objeto da classe Perimetro, que possui como atributo 4 inteiros(a,b,c e o valor do perímetro), você tentou passar como parâmetro os inteiros a,b e c, mas não criou um construtor que fizesse tal operação. O isso vale para todas as classes utilizadas.(inclusive mais adiante vou explicar que não era necessário utilizar classes para o que você desejava fazer) E outra coisa, na classe Perimetro você declara o inteiro perimetro e calcula seu valor diretamente no campo de declaração dos atributos, mas dessa forma o valor sempre será zero, afinal a e b não foram inicializados(logo têm como padrão o valor 0), logo seria necessário que tal cálculo fosse realizado dentro do construtor ou em um método, mas não naquele campo.

2- Diversas vezes você utilizou a seguinte construção:

int a1= new.Classificacao (a,b,c);//Não só em Classificacao, como também com outras classes

Talvez essa forma seja utilizada em outra linguagem, mas em Java a forma correta é:

<classe> a1 = new <classe>(<parâmetros>);

nesse caso seria

Classificacao a1 = new Classificacao(a,b,c);

Considerando que há um construtor na classe Classificacao que recebas os parâmetros

nesse mesmo formato.

3- O fluxo de sua sequência de if-else ficou um pouco confuso e apresenta um erro. Você fez o código da seguinte forma:

if{
//algo
else
//outra cosa
}

Ou seja, você não "fechou" o if antes de abrir o else, a forma correta seria:

if{
//algo
} else {
//outra coisa
}

Seria possível omitir as chaves tanto do if quanto do else para comandos de apenas UMA linha, como aconteceu no seu caso, mas isso não é uma prática recomendável de programação. Mesmo que após um if/else/else if hava apenas uma linha de código, use as chavez para abrir e fechar de forma a manter o código organizado e legível.

4- Depois de alterar todo o código da forma que eu disse você provavelmente terá alguns erros associados às classes, isso porque a estrutura de classes em java envolve algumas sutilezas. Todas as classes que você criou estão visíveis apenas no escopo da classe Triangulo, logo para "dar um new" em cada uma direto no main você teria algumas opções, dentre elas:

1 - Fora da classe Triangulo, criar todas as classes sem o modificador public(pois este só pode ser utilizado para a classe do atual arquivo .java)

2 - Manter as classes dentro da classe triangulo, mas adicionar às classes que estão "dentro" de triangulo o modificador static, para que dessa forma você possa usar a seguinte construção:

Classificacao a1 = new Triangulo.Classificacao(a,b,c);

Há outras formas, mas não acho necessário mencioná-las.

5- Por fim, para obter o resultado desejado não era necessário que você criasse tantas classes diferentes. Bastava existir a classe Triangulo com 3 atributos: int a, int b e int c, e dentro desta classe criar métodos que realizassem as operações desejadas, como por exemplo:

public int calculaArea(){

return ( a * b );

}

E pronto, com 3 linhas de código você criou um método que retorna um inteiro que representa a área do triângulo. Repetindo o mesmo processo para todas as funcionalidades você obtém um código mais limpo e legível.(teste criar métodos para todas as funcionalidades desejadas, inclusive verificar qual o tipo do triangulo).

Consegui corrigir seu código aqui e está funcionando, tente corrigir aí e caso não consiga, volte aqui dizendo qual dúvida ainda ficou pendente.

Peço aos demais membros que NÃO FORNEÇAM O CÓDIGO PRONTO, fazendo isso você não está ajudando o Fanatico, já que aprender a programar envolve errar e corrigir os erros.;)

Abraço!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!