1
resposta

Ajuda com Desafios Java

Fala pessoal estou começando com programação Java, recebi uns testes e não consegui aplicar o que já estudei, na minha cabeça eu entendo mas não consigo aplicar, alguém pode ajudar?

Segue os testes: /* Para cada número x de 1 até n este método deve adicionar um elemento no final de uma lista. Este elemento deve possuir as seguintes características Se x for divisível por 3, o elemento será a palavra "Fizz" Se x for divisível por 5, o elemento será a palavra "Buzz" Se x for divisível por 3 e por 5, o elemento será a palavra "FizzBuzz" Caso contrário, o elemento será x Exemplo: fizzBuzz(5) = [1, 2, "Fizz", 4, "Buzz"] /

  public List<Object> fizzBuzz(int n){
      for (int i = 1; i <= 15; i++) {   
            boolean divisivelPorTres = false;
            boolean divisivelPorCinco = false;
            divisivelPorTres = (i%3 == 0);
            divisivelPorCinco = (i%5 == 0);
            if(divisivelPorTres && divisivelPorCinco){
            System.out.println("FizzBuzz");   
            }else if(divisivelPorTres){
            System.out.println("Fizz");   
            }else if(divisivelPorCinco){
            System.out.println("Buzz");   
            }else{
            System.out.println("i");
            }
        }   
        }   


  /**
  * Este método recebe uma string sem espaços em branco. Verifique se todas os
  * caractéres da string são únicos, ou seja, cada caractér só pode aparecer
  * uma única vez.

  * Exemplo:
  * letrasUnicas("abcde!.kqwt") = true
  * letrasUnicas("abcde!.kqwt!") = false
  *
  * Bônus: Não use mais de um loop e nem classes que implementem Collection.
  */

public boolean letrasUnicas(String s){ return false; }



  /**
  * Este método recebe um lista de número inteiros positivos. Essa lista terá 
  * somente um número que se destaca de acordo com o padrão da lista.
  * 1 - Um número ímpar e todos os outros números pares
  * ou 2 - Um número par e todos os outros números ímpares.
  * Sua missão, caso deseje aceitá-la é: encontre o número que se destaca na 
  * lista.  
  * Exemplo:
  * numeroDestacado([1,3,4,5,7,9]) = 4
  * numeroDestacado([8,2,10,23,100,98]) = 23    
  */

public int numeroDestacado(List lista){ return -1; }```

/* Este método recebe uma string com uma frase. Esta frase ponde conter os sinais de pontuação "," e "!". Para cada seção da string, delimitada por um dos sinais de pontuação, você deve trocar a ordem das palavras mantendo os sinais de pontuação no lugar Exemplo: reverso("Oi cara, eu sou! Goku") = "cara Oi, sou eu! Goku" reverso("Que a força esteja com você!") = "você com esteja força a Que!" */

  public String reverso(String s){
    return null;
  }

/* A sequência de Farey é formada por uma sequência de frações irredutíveis entre 0 e 1 que tem um denominador menor ou igual a n em ordem crescente. Este método recebe um inteiro positivo maior que zero, e deve retornar a sequência de Farey correspondente, como uma lista de Doubles. Não se preocupe em formatar o número de casas decimais pós vírgula. Exemplo: farey(4) = [0.0,0.25,0.3333333333333333,0.5,0.6666666666666666,0.75,1.0] */

  public Collection<Double> farey(int n){
    return null;
  }

}

1 resposta

Olá Ramon, então, talvez seja interessante você assistir os cursos introdutórios de java aqui na alura para desenvolver melhor a base, por exemplo, você fez o primeiro mas não fez exatamente o que o desafio pediu que era adicionar o resultado ao final de uma lista, e acabou imprimindo a letra "i" no final, no lugar da variavel.

    public List<Object> fizzBuzz(int n){
        List<Object> lista = new ArrayList<>();
        for(int i=1; i <= n; i++){
            if(i % 3 == 0 && i % 5 == 0){
                lista.add("FizzBuzz");
            } else if(i % 5 == 0){
                lista.add("Buzz");
            } else if(i % 3 == 0){
                lista.add("Fizz");
            } else {
                lista.add(i);
            }
        }
        return lista;
    }

a segunda também é bem simples, não sei se conta como fiz pq o desafio falava em não usar classes que implementam Collection, apesar de não usar, usei um método da classe String pra facilitar.

    public boolean letrasUnicas(String str){
        String strcopy = "";
        for(int i=0; i < str.length(); i++){
            if(strcopy.contains(String.valueOf(str.charAt(i)))){
                return false;
            }
            strcopy = strcopy.concat(String.valueOf(str.charAt(i)));
        }
        return true;
    }

E a dos número destacado, onde eu guardei o primeiro valor par e impar encontrado, fiz um contador para qnts pares e impares encontrei e retornei o que só tinha um, ou -1 caso tivesse mais de um numero par e impar

    public int numeroDestacado(List<Integer> lista){
        int par = 0;
        int impar = 0;
        int destaquepar = -1;
        int destaqueimpar = -1;
        for(int n: lista){
            if(n % 2 == 0){
                if(par < 1) destaquepar = n;
                par++;
            } else{
                if(impar < 1) destaqueimpar = n;
                impar++;
            }
        }
        if(par == 1 && impar > 1){
            return destaquepar;
        } else if(impar == 1 && par > 1){
            return destaqueimpar;
        } else{
            return -1;
        }
    }