Dúvida sobre arrays em java

7 respostas
Harrisoncc

Desafio
Faça um programa com as características abaixo:

Leia 10 nomes, sem espaço em branco;

Imprima o terceiro nome da lista;

Imprima o sétimo nome da lista;

Imprima o nono nome da lista.

Entrada

A entrada consiste vários arquivos de teste, cada um com dez linhas e em cada linha tem um nome de no até 30 caracteres e sem espaço em branco. Conforme mostrado no exemplo de entrada a seguir.

Saída
Para cada arquivo da entrada, terá um arquivo de saída. E como mencionado no Desafio, gere três linhas conforme os procedimentos 2, 3 e 4.

O código que fiz é o que vem loco abaixo:

import java.util.Scanner;

public class Problem {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

// TODO: complete os espaços em branco com sua solução para o problema

String[] nomes = new String[10];

for(int i=0 ; i<10 ; i++){

if(nomes[i] == nomes[2]){

nomes[i] = sc.nextLine();

System.out.println(nomes[2]);

}

if(nomes[i] == nomes[6]){

nomes[i] = sc.nextLine();

System.out.println(nomes[6]);

}

if(nomes[i] == nomes[8]){

nomes[i] = sc.nextLine();

System.out.println(nomes[8]);

}

}

}

}

Dado de entrada:
igla felipe adriana malu laine rafael ray amy venilton camila
Saída esperada:
adriana ray venilton
Sua Saída:
null null adriana null null null ray null venilton

eu consegui imprimir a resposta correta como na saída esperada, porém nos outros espaços aparecem o null. Como faço para que o programa não imprima os nulls?

7 Respostas

staroski

Cadê o exemplo?

Como são esses procedimentos?

Esse if não faz sentido pois todas as posições estarão iguais a null no início

Harrisoncc

esse é um exemplo de entrada e saída

|Exemplos de Entrada| -----Exemplos de Saída |

|USP -------------------------------- UFCG

UFPE -------------------------------- ITA

UFCG -------------------------------- URI

UFRN----------------------------------

UFRJ----------------------------------
IME

ITA-------------------------------------

UNIOESTE--------------------------

URI------------------------------------

UFG----------------------------------

Harrisoncc

no caso é por conta desse if(nomes[i] == nomes[2]){ que fica aparecendo todos aqueles nulls? pois o resultado aparece correto, porém, junto vem os outros espaços com null.

devictorqroz
Faz um if antes

if(nome[i] != null) {

//resto do codigo

}

ou

if (nome[i] == null) {

continue;

}

acho que resolva…

hugokotsubo

Em algum lugar é dito que precisa guardar os 10 nomes em um array? Porque se for só para ler 10 nomes e imprimir apenas alguns, poderia ser algo do tipo:

for (int i = 0; i < 10; i++) {
    String nome = sc.nextLine();
    if (i == 2 || i == 6 || i == 8)
        System.out.println(nome);
}

E só.

Se é pra guardar todos os nomes no array, basta adaptar:

String[] nomes = new String[10];
for (int i = 0; i < 10; i++) {
    nomes[i] = sc.nextLine();
    if (i == 2 || i == 6 || i == 8)
        System.out.println(nomes[i]);
}

O erro da sua lógica é que vc está comparando os elementos do array (nomes[i]), quando na verdade é pra comparar a posição (i deve ser 2, 6 ou 8 pra imprimir).

Harrisoncc

Obrigado, deu certo

Harrisoncc

era a primeira opção, e obrigado pela dica, era a primeira opção, realmente errei na parte do nomes[i], agora faz sentido.

Criado 20 de julho de 2023
Ultima resposta 21 de jul. de 2023
Respostas 7
Participantes 4