1
resposta

Java | Erro ao separar String com .split

Boa tarde pessoal,

Estou com problemas em separar uma String por espaços no método .split

Após o código abaixo, a Array novaEntrada não está armazenando todas as palavras que estava na String entrada. Em todos os casos, o .lenght() de novaEntrada está me retornando apenas 1, ou seja, está armazenando apenas 1 palavra.

Alguém pode me ajudar com isso por gentileza?

Trecho do código:

String entrada = input.next();

String[] novaEntrada = entrada.split(" ");

Exercício completo:

import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int a = input.nextInt();
        int totalC = 0;
        int totalR = 0;
        int totalS = 0;

        for (int i = 1; i <= a; i++) {

            String entrada = input.next();

            String[] novaEntrada = entrada.split(" ");

            switch (novaEntrada[1]) {

            case "C":
                totalC += Integer.parseInt(novaEntrada[0]);
                break;
            case "R":
                totalR += Integer.parseInt(novaEntrada[0]);
                break;
            case "S":
                totalS += Integer.parseInt(novaEntrada[0]);
                break;
            }

        }

        double percC = (double) totalC/a;
        double percR = (double) totalR/a;
        double percS = (double) totalS/a;

        System.out.println("Total: " + a + " cobaias");
        System.out.println("Total de coelhos: " + totalC);
        System.out.println("Total de ratos: " + totalR);
        System.out.println("Total de sapos: " + totalS);
        System.out.println("Percentual de coelhos: " + new DecimalFormat("##.00").format(percC) + " %");
        System.out.println("Percentual de ratos: " + new DecimalFormat("##.00").format(percR) + " %");
        System.out.println("Percentual de sapos: " + new DecimalFormat("##.00").format(percS) + " %");

    }
}
1 resposta

Fala @Eduardo, beleza?

O problema não está no split, ele esta fazendo o processo de quebra certinho, o problema esta no input. Adiciona após o Scanner input = new Scanner(System.in); o seguinte comando: input.useDelimiter("\r?\n"); pois assim fará que a lib Scanner reconheca os espacos que são ignorados no input.

Código completo:

import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        input.useDelimiter("\r?\n");


        int a = input.nextInt();
        int totalC = 0;
        int totalR = 0;
        int totalS = 0;

        for (int i = 1; i <= a; i++) {

            String entrada = input.next();

            String[] novaEntrada = entrada.split(" ");

            switch (novaEntrada[1]) {

                case "C":
                    totalC += Integer.parseInt(novaEntrada[0]);
                    break;
                case "R":
                    totalR += Integer.parseInt(novaEntrada[0]);
                    break;
                case "S":
                    totalS += Integer.parseInt(novaEntrada[0]);
                    break;
            }

        }

        double percC = (double) totalC/a;
        double percR = (double) totalR/a;
        double percS = (double) totalS/a;

        System.out.println("Total: " + a + " cobaias");
        System.out.println("Total de coelhos: " + totalC);
        System.out.println("Total de ratos: " + totalR);
        System.out.println("Total de sapos: " + totalS);
        System.out.println("Percentual de coelhos: " + new DecimalFormat("##.00").format(percC) + " %");
        System.out.println("Percentual de ratos: " + new DecimalFormat("##.00").format(percR) + " %");
        System.out.println("Percentual de sapos: " + new DecimalFormat("##.00").format(percS) + " %");

    }
}