Problemas com estrutura de repetição for

Pessoal, estou fazendo uma questão que pede para criar um vetor de 5 posições que armazene o sexo, nome e salário , sendo que se o sexo for “F” e salário maior que 5000 , deverá ser mostrado em tela.
Criei um vetor e depois um laço for com uma estrutura condicional para exibir o que foi solicitado pela questão, mas quando coloco o sistema para rodar parece que o laço não está sendo executado. Segue o código…
package listaguanabara;
import java.util.Scanner;
import java.util.Arrays;

    /**
     *
     * @author Andre
     */
    public class NewClassVetores85 { 
        public static void main(String[] args) {
            String[] sexo= new String[5]; 
            String[]nome= new String[5];
            double[]sal= new double[5];
            int i;
            for(i=0;i<sexo.length;i++){
                System.out.println("Informe o seu sexo:");
                sexo[i]= new Scanner(System.in).nextLine();
                System.out.println("Informe o seu nome:");
                nome[i]=new Scanner(System.in).nextLine();
                System.out.println("Informe o seu salário:");
                sal[i]= new Scanner(System.in).nextDouble();   
            } 
            for(i=0;i<sexo.length;i++){
              if(sexo[i]=="f"){ 
                  if(sal[i]>5000){
                      System.out.println("Sra " + nome[i] + " tem um salário de " + sal[i] + " reais."); 
                    }     
                }    
            }
        }       
    }  

Alguem poderia me ajudar?

O System.in é único, então não faz sentido criar vários objetos Scanner para ler ele, cria um só.
Quando você usa o Scanner para ler entrada de dados pelo TECLADO, deve utilizar somente o método nextLine(), pois é o único método que consome adequadamente a quebra de linha produzida ao pressionar ENTER.

O operador == serve para comparar o valor de tipos primitivos e o endereço de memória de objetos.
String não é um tipo primitivo, então no seu código você está comparando o endereço de memória e não o conteúdo da String.
Para comparar o conteúdo, utilize o método equals.

Veja:

import java.util.Scanner;

/**
 * @author Andre
 */
public class NewClassVetores85 {

    private static final Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        String[] sexo = new String[5];
        String[] nome = new String[5];
        double[] sal = new double[5];
        for (int i = 0; i < sexo.length; i++) {
            System.out.println("Informe o seu sexo:");
            sexo[i] = in.nextLine();
            System.out.println("Informe o seu nome:");
            nome[i] = in.nextLine();
            System.out.println("Informe o seu salário:");
            sal[i] = Double.parseDouble(in.nextLine());
        }
        for (int i = 0; i < sexo.length; i++) {
            if (sexo[i].equals("f")) {
                if (sal[i] > 5000) {
                    System.out.println("Sra " + nome[i] + " tem um salário de " + sal[i] + " reais.");
                }
            }
        }
    }
}

Pergunta:

Você precisa realmente criar 3 arrays?
Não poderia criar um array de objetos do tipo Pessoa contendo os atributos sexo, nome e salario por exemplo?

Veja:

Classe Pessoa:

public class Pessoa {

    public String sexo;
    public String nome;
    public double salario;
}

Seu exercício refatorado:

import java.util.Scanner;

/**
 * @author Andre
 */
public class NewClassVetores85 {

    private static final Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        Pessoa[] pessoas = new Pessoa[5];
        for (int i = 0; i < pessoas.length; i++) {
            pessoas[i] = new Pessoa();
            System.out.println("Informe o seu sexo:");
            pessoas[i].sexo = in.nextLine();
            System.out.println("Informe o seu nome:");
            pessoas[i].nome = in.nextLine();
            System.out.println("Informe o seu salário:");
            pessoas[i].salario = Double.parseDouble(in.nextLine());
        }
        for (Pessoa pessoa : pessoas) {
            if (pessoa.sexo.equals("f")) {
                if (pessoa.salario > 5000) {
                    System.out.println("Sra " + pessoa.nome + " tem um salário de " + pessoa.salario + " reais.");
                }
            }
        }
    }
}
1 curtida

Coloquei o equals e ele rodou aqui. Sobre as perguntas , ainda não me considero maduro o suficiente para responde las. Estou finalizando um curso de Java básico de uma plataforma (não sei se posso falar o nome dela) e seguindo o roteiro de estudos, o próximo conteúdo é Programação Orientada a Objetos. Creio que com conhecimento de POO conseguiria criar uma array de objetos do tipo Pessoa com os atributos citados.
Muito obrigado pela orientação e sugestões acerca da questão, me ajudou bastante.

1 curtida