Ir ao conteúdo

Escreva uma classe que contém um inteiro, e tem métodos para atribuir um valor a este inteiro, para calcular o quadrado deste inteiro e para calcular o fatorial deste inteiro.


Posts recomendados

Postado

Escreva uma classe que contém um inteiro, e tem métodos para atribuir um valor a este inteiro, para calcular o quadrado deste inteiro e para calcular o fatorial deste inteiro. Escreva também um trecho de programa que teste o funcionamento de um objeto desta classe.

 

  • Moderador
Postado

Prezado,

 

Seja bem-vindo ao Fórum do Clube do Hardware; obrigado por sua participação! :)

 

Quanto à sua dúvida, para podermos lhe ajudar, nós precisamos de mais alguns detalhes, tais como:

 

  • parte do código que já foi feito;
  • caso não tenha um código feito, qual o algoritmo que você pretende usar para resolver o problema;
  • você tem experiência com esta linguagem de programação?

 

Por favor, não leve para o lado pessoal, mas o nosso objetivo principal aqui é ajudar você a resolver o problema, se simplesmente postássemos um código já pronto, você nunca aprenderia de fato... ;)

 

Atenciosamente,

Equipe Clube do Hardware

Postado
14 minutos atrás, dif disse:

Prezado,

 

Seja bem-vindo ao Fórum do Clube do Hardware; obrigado por sua participação! :)

 

Quanto à sua dúvida, para podermos lhe ajudar, nós precisamos de mais alguns detalhes, tais como:

então, a primeira parte  "Escreva uma classe que contém um inteiro, e tem métodos para atribuir um valor a este inteiro " é grego pra mim eu nao entendi nada. Contudo a parte " para calcular o quadrado deste inteiro e para calcular o fatorial deste inteiro.  " eu acho que sei, e é :

 

import java.util.Scanner;
 
class exercicio
{
   public static void main(String args[])
   {
      int n, c, fact = 1;
 
      System.out.println("entre um inteiro para achar o fatorial");
      Scanner in = new Scanner(System.in);
 
      n = in.nextInt();
 
      if ( n < 0 )
         System.out.println("erro");
      else
      {
         for ( c = 1 ; c <= n ; c++ )
            fact = fact*c;
 }
     System.out.println("Fatorial de "+n+" is = "+fact);

Scanner in = new Scanner(System.in); 
System.out.print(" "); 
int num = in.nextInt();
 print quadrado(num);
 } 
public static int quadrado(int num)
 { 
System.out.println("você entrou: " + num);
 num = num * num; 
System.out.println("seu numero ao quadrado é: " + num);
 return num; 
}


      }

Eu só n sei se precisava ter dois scanner in = new scanner ou se um só ja dava...

 

  • Moderador
Postado

@Karpov1 Bom o código que apresentou nada tem haver com o enunciado pedido, contudo ele ainda pode ser usado para implementar seu exercício. 

Nós temos aqui um exercício de orientação a objetos, onde tens uma classe pai e uma classe filha para testar o objeto da classe criada.

 

Vamos as interpretações:

Citação

Escreva uma classe que contém um inteiro, e tem métodos para atribuir um valor a este inteiro

Basicamente vai criar uma classe que recebe um valor do tipo INT. 

Nesta classe irás usar os getters e setters(pesquise como usa-los).

 

Na classe de teste, você vai criar um objeto da classe criada, criar uma função para calcular o quadrado e o fatorial de um número.

De fato o exercício é bem iniciante, por isso dobre sua atenção! 

O google ajuda muito rsrsr mas as vezes ele te dá a resposta e aí você não aprende nada.

Postado
3 horas atrás, dif disse:

@Karpov1 Bom o código que apresentou nada tem haver com o enunciado pedido, contudo ele ainda pode ser usado para implementar seu exercício. 

Nós temos aqui um exercício de orientação a objetos, onde tens uma classe pai e uma classe filha para testar o objeto da classe criada.

 

Vamos as interpretações:

Basicamente vai criar uma classe que recebe um valor do tipo INT. 

Nesta classe irás usar os getters e setters(pesquise como usa-los).


class Numero{

  private int valor;
 

  public int getValor() {
    return this.valor;
  }

  public void setValor(int valor) {
    this.valor = valor;
  }

Na classe de teste, você vai criar um objeto da classe criada, criar uma função para calcular o quadrado e o fatorial de um número.



 

class Numero {
   public static void main(String[] args) {
 
     Numero meuNumero;
     meuNumero = new Numero();
int c;
if ( meuNumero < 0 )
         System.out.println("erro");
      else
      {
         for ( c = 1 ; c <= meuNumero ; c++ )
            fact = fact*c;
 }
     System.out.println("Fatorial de "+n+" is = "+fact);
getNumero();
System.out.println("você entrou: " + meuNumero);
getNumero();
 meuNumero =meuNumero * meuNumero; 
System.out.println("seu numero ao quadrado é: " + meuNumero);
 return meuNumero;

}
}

 
   
  

De fato o exercício é bem iniciante, por isso dobre sua atenção! 

O google ajuda muito rsrsr mas as vezes ele te dá a resposta e aí você não aprende nada.

Eu fiquei estudando ate agora e foi isso que consegui fazer. Eu tenho que entregar esse exercicio daqui umas horas, você poderia corrigir o que tem errado kk? ou então fazer umas modificaçoes e dar mais dicas...

  • Moderador
Postado

@Karpov1 De fato o código possui alguns errinhos. Seu professor pediu que implementasse dois métodos na classe Numeros um para calcular o quadrado e outro para calcular o fatorial.

Visto isso.. tens que fazer desta forma:

 

public class Numeros {

    public int valor;

    public int getValor() {
        return valor;
    }

    public void setValor(int valor) {
        this.valor = valor;
    }

    public static int Quadrado(int num) {
        int quadrado = num * num;
        return quadrado;
    }

    public static int Fatorial(int num){
        if(num == 0){
            return 1;
        }else{
            return num * Fatorial(num-1);
        }
    }
}

E a classe de teste é mais simples:

public class testaClasse {

    public static void main(String[] args) {
        //instancia um objeto da classe
        Numeros x = new Numeros();
         //define o valor do objeto
         x.setValor(4);
      
        //Podes definir o valor do objeto da seguinte forma também: x.valor = 4

        System.out.println("O quadrado de " + x.getValor() + " é: " + x.Quadrado(x.getValor()));
        System.out.println("O Fatorial de " + x.getValor() + " é: "+ x.Fatorial(x.getValor()));
    }

}

Basicamente é isso. Obviamente se você copiar e colar seu professor vai saber, afinal ele certamente busca lugares onde os alunos costumam procurar. Então recomendo fortemente que estude o código e entenda passo a passo que está acontecendo.

 

O erro do seu código estava mais em como deveria ser feito, no caso estavas fazendo no modo procedural misturado com orientada a objetos.

Postado
6 horas atrás, dif disse:

@Karpov1 De fato o código possui alguns errinhos. Seu professor pediu que implementasse dois métodos na classe Numeros um para calcular o quadrado e outro para calcular o fatorial.

Visto isso.. tens que fazer desta forma:

 


public class Numeros {

    public int valor;

    public int getValor() {
        return valor;
    }

    public void setValor(int valor) {
        this.valor = valor;
    }

    public static int Quadrado(int num) {
        int quadrado = num * num;
        return quadrado;
    }

    public static int Fatorial(int num){
        if(num == 0){
            return 1;
        }else{
            return num * Fatorial(num-1);
        }
    }
}

E a classe de teste é mais simples:


public class testaClasse {

    public static void main(String[] args) {
        //instancia um objeto da classe
        Numeros x = new Numeros();
         //define o valor do objeto
         x.setValor(4);
      
        //Podes definir o valor do objeto da seguinte forma também: x.valor = 4

        System.out.println("O quadrado de " + x.getValor() + " é: " + x.Quadrado(x.getValor()));
        System.out.println("O Fatorial de " + x.getValor() + " é: "+ x.Fatorial(x.getValor()));
    }

}

Basicamente é isso. Obviamente se você copiar e colar seu professor vai saber, afinal ele certamente busca lugares onde os alunos costumam procurar. Então recomendo fortemente que estude o código e entenda passo a passo que está acontecendo.

 

O erro do seu código estava mais em como deveria ser feito, no caso estavas fazendo no modo procedural misturado com orientada a objetos.

Obrigado, nao vou copiar nao...Eu nao entendi por que você usou static no metodo Quadrado e Fatorial, e por que nao usou static nos Get e Set?

E por que no x.getValor() você não colocou nada entre parenteses?Nao precisaria por x.getValor(4)? 

E você começou a primeira classe fazendo "public class Numeros" , nao poderia ser só "class Numeros" ? 

  • Moderador
Postado
1 hora atrás, Karpov1 disse:

Eu nao entendi por que você usou static no metodo Quadrado e Fatorial, e por que nao usou static nos Get e Set?

Justamente por que são métodos estáticos, da classe. Eles como público, seriam acessados por todos os objetos instanciados da classe.

 

Você poderia colocar por exemplo as funções dentro da classe  de teste. Mas aí ela não seria um método de classe, seria um método avulso perdido ali no meio. O paradigma de orientação a objetos  é bem organizado. O objetivo do exercício é você aprender sobre o encapsulamento, ou seja, os getter e setter, o construtor da classe(creio que não deve ter chegado nesta parte.). enfim.. é mais ou menos isso. 

 

No caso dos getters, 

 

1 hora atrás, Karpov1 disse:

E por que no x.getValor() você não colocou nada entre parenteses?Nao precisaria por x.getValor(4)? 

Porque o getValor() é um método que retorna o valor definido pelo setValor(). Como o método não tem parâmetros, então deve chamar o método "vazio"

 

Por exemplo:

public void saudacao(){
   system.out.println("Olá karpov1");
}


public static String saudacao2(String nome){
    String saudacao = "Olá "+ nome;
    return saudacao;
}

Onde o primeiro método é do tipo void que não necessita de um retorno e nem parâmetro.

chamando o método  saudacao(). iria gerar a frase "Olá Karpov1"

 

Já o segundo método é do tipo estático de String  que recebe um parâmetro o nome.

Chamando-o saudacao2("karpov1") vai mostrar a mesma a saudação para o nome escrito.

Então se chamar novamente saudacao2("dif"),  vai mostrar a frase "Olá dif".

 

 

1 hora atrás, Karpov1 disse:

E você começou a primeira classe fazendo "public class Numeros" , nao poderia ser só "class Numeros" ? 

Assim como outras propriedades de classe, os acessos modificadores devem ser explicitamente definidos (protected, internal, public, private). Caso não sejam definidos, internal é o padrão.

 

Desculpe o post massante.

Abraço

Postado
4 horas atrás, dif disse:

Justamente por que são métodos estáticos, da classe. Eles como público, seriam acessados por todos os objetos instanciados da classe.

 

Quando eu compilo o programa está dando um erro...nas linhas 

System.out.println("O quadrado de " + x.getValor() + " é: " + x.Quadrado(x.getValor()));
        System.out.println("O Fatorial de " + x.getValor() + " é: "+ x.Fatorial(x.getValor()));

Esta aparecendo "the static method Quadrado(int) from the type Numeros should be accessed in a static way"

Como faz pra corrigir isso? 

  • Moderador
Postado

@Karpov1 Não sei o porque da mensagem de erro, meu IDE é o netbeans e não apresenta esse erro.

 

Posta aqui o código completo do jeito que está agora( se mudou algo mostre) da classe e da classe de teste.

Aparentemente o erro diz respeito ao método estático, que deve ser acessado de forma estática.

 

Em  todo o caso, tente alterar para:

System.out.println("O quadrado de " + x.getValor() + " é: " + Numeros.Quadrado(x.getValor()));
System.out.println("O Fatorial de " + x.getValor() + " é: "+ Numeros.Fatorial(x.getValor()));

Onde o Numeros é o nome da classe.

Usando dessa forma e a outra anterior, meu netbeans não acusou erros, só uma observação no cantinho recomendando usar a referência da classe ( no caso o nome da classe Numeros) mas mesmo assim não dá erro.

 

Veja o print

7EkZHE5.png

 

 

Visitante
Este tópico está impedido de receber 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!