Dúvida sobre arrays em java

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?

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

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----------------------------------

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.

Faz um if antes
if(nome[i] != null) {
//resto do codigo
}
ou
if (nome[i] == null) {
continue;
}

acho que resolva…

1 curtida

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).

1 curtida

Obrigado, deu certo

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