Problemas com Exercício Java

11 respostas
J

Bom dia pessoal.

Sou estudante em Análise e Desenvolvimento de Sistemas, e tive vários problemas com a faculdade no quesito programação.
Até entendendo várias coisas, mas pelos problemas que tive na faculdade e por não trabalhar/estagiar na área estou procurando estudar mais ainda.

O professor passou um exercício, que até então não parece difícil, mas gostaria de uma ajuda de vocês, pelo menos para iniciar esta tarefa.

“Criar uma classe denominada Triangulo. Criar uma classe TestaTri, com um método denominado TestaTriangulo1 que recebe o triângulo como parâmetro e retorna uma
String com a classificação do mesmo (equilatero, isósceles, escaleno ou não é um triângulo).
Criar uma segunda classe TestaTri2, que possui um método denominado TestaTriangulo2, que verifica se é um triângulo retângulo.”

Desde já agradeço a ajuda.

11 Respostas

drsmachado

E o que você já fez?

J

Mas não sei se eh isso.
Pois não me lembro como chamar/criar esses métodos.
Pois pede pra passar alguns parâmetros, mas como tipo de retorno uma String.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package verificatriangulos;

import java.util.Scanner;

/**
 *
 * @author jean.carlos
 */
public class Triangulo {
    
    int lado1, lado2, lado3;
    TestaTri testa = new TestaTri(int lado1, lado2, lado3);
    return true;
    
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package verificatriangulos;

import java.util.Scanner;

/**
 *
 * @author jean.carlos
 */
public class TestaTri {

    public TestaTri() {
        int lado1, lado2, lado3;  
        int opcao = 1;  
  
        while (opcao == 1) {  
            Scanner s = new Scanner(System.in);  
  
            System.out.println("Entre com o lado 1:");  
            lado1 = s.nextInt();  
            System.out.println("------------------------------------------------");  
            System.out.println("Entre com lado 2:");  
            lado2 = s.nextInt();  
            System.out.println("------------------------------------------------");  
            System.out.println("Entre com lado 3:");  
            lado3 = s.nextInt();  
            System.out.println("------------------------------------------------");  
  
            if ((lado1 < lado2 + lado3) && (lado2 < lado1 + lado3) && (lado3 < lado1 + lado2)) {  
                if (lado1 == lado2 && lado1 == lado3) {  
                    System.out.println("Triangulo Equilatero");  
                } else if ((lado1 == lado2) || (lado1 == lado3)) {  
                    System.out.println("Triangulo Isosceles");  
                } else  
                    System.out.println("Triângulo Escaleno");  
            } else {  
                System.out.println("Não é um triangulo!");  
            }
        }
    }
}
S

A primeira coisa que eu vi de errado é que você colocou um return fora de metodo (classe Triangulo).

E outra coisa, o triangulo equilatero é quando os 3 lados são iguais certo? Se for, você pode melhorar muito esse seu if.

Para finalizar, para chamar um metodo é assim:

Objeto nomeDaVariavelDeReferencia = new Objeto(); nomeDaVariavelDeReferencia.nomeDoMetodo(parametros);

E se a sua intenção é deixar um while permanente você pode fazer assim:

while(true) { //seu codigo }

J

Obrigado, mas realmente ainda esta complicado.

Vou desfazer tudo isso e (tentar) começar do zero.

para eu criar um método seria tipo isso:

private NomeDoMetodo(parâmetro){
         código aqui...
}
S
jeancarlosaps:
Obrigado, mas realmente ainda esta complicado.

Vou desfazer tudo isso e (tentar) começar do zero.

para eu criar um método seria tipo isso:

private NomeDoMetodo(parâmetro){
         código aqui...
}

Não. Declaração de metodo é assim:

[public/private/protected/Sem Modificador] [final/abstract/Sem Modificador] [synchronized] [static] [int/Integer/Object/String/AlgumTipoDeObjeto/void] meuMetodo(parametro1 par1, parametro2 par2, etc...) {

}

Escolha um de cada [ ] lembrando que APENAS o tpo de retorno ([int/Integer/Object/String/AlgumTipoDeObjeto/void]) e o nome são obrigatorios.

Exemplo de metodo:

public void meuMetodo(String a) {
//codigo
}

Lembrando que void não retorna nada.

M

Então eu fiz de um modo bem básico, mas deve ajudar, segue o código:

public class Triangulo {
	int lado1 , lado2, lado3;  
}
public class TestaTri {
	public String TestaTriangulo1(Triangulo tri){ 
			while((tri.lado1 < tri.lado2 + tri.lado3) && (tri.lado2 < tri.lado1 + tri.lado3) && (tri.lado3 < tri.lado1 + tri.lado2)){
				if (tri.lado1 == tri.lado2 && tri.lado1 == tri.lado3){    
					return "Triangulo Equilatero";    
				}else if ((tri.lado1 == tri.lado2) || (tri.lado1 == tri.lado3)) {    
					return"Triangulo Isosceles";    
				}else{    
					return"Triângulo Escaleno"; 
				}
			}
			return"Não é um triangulo!";		    
	}
}
public class TestaTri2 {

	public String TestaTriangulo2(Triangulo tri){
		if(tri.lado1 ==90||tri.lado2 ==90|| tri.lado3 ==90){
			return "é um triangulo retangulo";
		}
		return "não é um triangulo retangulo";
		
	}
	
}
import java.util.Scanner;

public class ExecutaTri {
	
	public static void main(String[] args) {
		Scanner valores = new Scanner(System.in);
		Triangulo triangulo = new Triangulo();
		
		System.out.println("Entre com o lado 1:");    
		triangulo.lado1= Integer.parseInt(valores.nextLine());    
        System.out.println("------------------------------------------------");    
        
        System.out.println("Entre com lado 2:");    
        triangulo.lado2 = Integer.parseInt(valores.nextLine());    
        System.out.println("------------------------------------------------");    
        
        System.out.println("Entre com lado 3:");    
        triangulo.lado3 = Integer.parseInt(valores.nextLine());    
        System.out.println("------------------------------------------------");    
		
        TestaTri testa = new TestaTri();
        TestaTri2 testa2 = new TestaTri2();
		
        System.out.println(testa.TestaTriangulo1(triangulo));
        System.out.println(testa2.TestaTriangulo2(triangulo));
		

	}

}

Vê se ajuda;)

rderoci

Jean,

Fiz o Testa Triangulo 1, que mostra se é ISOSCELES, ESCALENO ou EQUILATERO:

Entidade Triangulo:

package entity;

public class Triangulo {
	
	private Integer lado1, lado2, lado3;
	private String tipo;
	
	public Triangulo(Integer lado1, Integer lado2, Integer lado3, String tipo) {
		super();
		this.lado1 = lado1;
		this.lado2 = lado2;
		this.lado3 = lado3;
		this.tipo = tipo;
	}

	public Triangulo() {
		super();
	}

	public Integer getLado1() {
		return lado1;
	}

	public void setLado1(Integer lado1) {
		this.lado1 = lado1;
	}

	public Integer getLado2() {
		return lado2;
	}

	public void setLado2(Integer lado2) {
		this.lado2 = lado2;
	}

	public Integer getLado3() {
		return lado3;
	}

	public void setLado3(Integer lado3) {
		this.lado3 = lado3;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		
		this.tipo = tipo;
	}

}

Enum para o Tipo do Triângulo:

package entity;

public enum TrianguloTipoENUM{
	EQUILATERO,ISOSCELES,ESCALENO;
}

View, para Input dos valores dos lados do triangulo:

package view;
import java.util.Scanner;


public class InputTriangulo {
	
	public Integer lerLado1(){
		Scanner in = new Scanner(System.in);
		System.out.println("Informe o tamanho do Lado 1 do triangulo: ");
		return new Integer (in.nextLine());
	}
	
	public Integer lerLado2(){
		Scanner in = new Scanner(System.in);
		System.out.println("Informe o tamanho do Lado 2 do triangulo: ");
		return new Integer (in.nextLine());
	}
	
	public Integer lerLado3(){
		Scanner in = new Scanner(System.in);
		System.out.println("Informe o tamanho do Lado 3 do triangulo: ");
		return new Integer (in.nextLine());
	}

}

View, Output para o tipo do triangulo:

package view;

import entity.Triangulo;

public class OutputTriangulo {
	
	public void imprimirResultado(Triangulo t){
		
		System.out.println("Tipo do Triangulo: "+t.getTipo());
	}
}

Controller, a lógica para verificar o Tipo do Triangulo:

package controller;

import view.OutputTriangulo;
import view.InputTriangulo;
import entity.TrianguloTipoENUM;
import entity.Triangulo;

public class TestaTri {

	public static void main(String[] args) {
		Triangulo triangulo = new Triangulo();
		InputTriangulo ttv = new InputTriangulo();
		OutputTriangulo ot = new OutputTriangulo();
		
		triangulo.setLado1(ttv.lerLado1());
		triangulo.setLado2(ttv.lerLado2());
		triangulo.setLado3(ttv.lerLado3());
		
		if ((triangulo.getLado1() < triangulo.getLado2() + triangulo.getLado3()) && 
				(triangulo.getLado2() < triangulo.getLado1() + triangulo.getLado3()) 
				&& (triangulo.getLado3() < triangulo.getLado1() + triangulo.getLado2())) {
            
			if (triangulo.getLado1().equals(triangulo.getLado2()) && triangulo.getLado1().equals(triangulo.getLado3()))   
            	triangulo.setTipo(TrianguloTipoENUM.EQUILATERO.name());
            
            else if (triangulo.getLado1().equals(triangulo.getLado2()) || triangulo.getLado1().equals(triangulo.getLado3()))    
            	triangulo.setTipo(TrianguloTipoENUM.ISOSCELES.name());
            
            else    
                triangulo.setTipo(TrianguloTipoENUM.ESCALENO.name()); 
         }else {    
            System.out.println("Não é um triangulo!");    
          }
		
		ot.imprimirResultado(triangulo);
	
	}
}

Já está funcional!

[b]FALTA:

  1. Você corrigir a lógica para cada tipo de triangulo, por exemplo, a lógica para verificar se é ISOSCELES está errada.
  2. Criar o Testa Triangulo 2 que você citou, bom, com o exemplo que passei vc consegue fazer essa nova classe!
    [/b]

Qualquer dúvida, posta!

Abs,
Romulo Rocha

J

Pessoal, obrigado…

Conseguir modificar bastante coisa aqui e abriu e muito minha mente…

Vocês me indicam algum curso de java, pode ser até mesmo video aula??
Formo no fim do ano e vou formar não sabendo praticamente nada para o mercado…

Estou até procurando estágios aqui em BH/MG, mas esta complicado.

Desde já agradeço demais pela ajuda e paciência.

M

Te recomendo as apostilas da Caelum http://www.caelum.com.br/apostilas/

Ajuda muito;)

S

Michael Myers:
Te recomendo as apostilas da Caelum http://www.caelum.com.br/apostilas/

Ajuda muito;)

A FJ11 é um excelente primeiro passo.

rderoci

jeancarlosaps:
Pessoal, obrigado…

Conseguir modificar bastante coisa aqui e abriu e muito minha mente…

Vocês me indicam algum curso de java, pode ser até mesmo video aula??
Formo no fim do ano e vou formar não sabendo praticamente nada para o mercado…

Estou até procurando estágios aqui em BH/MG, mas esta complicado.

Desde já agradeço demais pela ajuda e paciência.

Para entrar no mercado de trabalho rápido (ou seja, sabendo o básico que todos os estagiários atualmente estão sabendo):
FJ11 + FJ21 na Caelum

Se tornar um diferencial:

Use a cabeça Java:
http://www.americanas.com.br/produto/6596934/livros/informatica/informatica/livro-use-a-cabeca!-java
Leia em uma livraria antes de comprar, você pode nao se adaptar a literatura do livro.

Use a Cabeça! Servlets & JSP
http://www.americanas.com.br/produto/6829450/livros/informatica/informatica/livro-use-a-cabeca!-servlets-e-jsp
Leia em uma livraria antes de comprar, você pode nao se adaptar a literatura do livro.
Java web (equivalente e mais abrangente que o FJ21)

Utilizando UML e Padrões:
http://www.americanas.com.br/produto/5638283/livros/informatica/metodologiadeanalisesdesistemas/livro-utilizando-uml-e-padroes-uma-introducao-a-analise-e-ao-projeto-orientados
Muito bom, vc tem que aprender padrões, nao tem como fugir deles, principalmente ao utilizar frameworks web.

Estudar frameworks, na internet (somente depois de aprender tudo o que viu acima): JSF, Struts, Hibernate, Spring, Ant…

Criado 3 de julho de 2012
Ultima resposta 3 de jul. de 2012
Respostas 11
Participantes 5