1
resposta

Problemas com String

Boa tarde pessoal estou querendo uma ajudinha com relação a um código que estou contruindo trata-se de um prograna que lerá um conjunto de Strings que contenham letras e números A letra que tiver acompanhada de um numero Ex: N123S456L124O234. caso a String tenha N Acompanhado de numero Y vai receber o numero que é 123, caso tenha o valor S acompanhado de numero Y vai receber a subtração da sequencia de numero que é 456, caso L X vai receber 124 e caso O X vai receber a subtração de 234.

Quando eu usei a entrada N123LSX o sistema me retornou uma resposta satisfatória. Só que quando eu retornei N123LXN123 era para o sistema somar ao eixo de Y 123+123 = 246 só que eu não estou conseguindo fazer isso.

Entradas: N123LSX // N123LN123 // N123LXN123

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Drone {

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

        int Y = 0;
        int X = 0;


        System.out.print("Entre com o comando: ");
        String entrada = sc.nextLine();

        if (entrada.matches(".*[xX]\\d+")) {
            System.out.printf("(999, 999)");
        } else {
            Boolean continuar = true;
            while (continuar == true) {
                String removendoX = entrada.replaceAll("[a-zA-Z&&[^xX]][xX]", "");
                continuar = !removendoX.equals(entrada);
                entrada = removendoX.toUpperCase();
            }

            entrada = entrada.replaceAll("[a-zA-Z]\\d+[xX]{1}", "");


            String comandos = entrada.replaceAll("[a-zA-Z]+$", "");
            String comandos2 = entrada.replaceAll("[a-zA-Z]+[0-9]+", "");
            String comandos3 = entrada.replaceAll("^[0-9]+[xX]*", "");



            //N123LSX
            //N123LN123
            //N123LXN123

            String numerico = "";
            int numeroN = 0;

            if (comandos.matches("[nN]\\d+")) {
                numerico = comandos.replaceAll("[nNsSlLoO]", "");
                numeroN = Integer.parseInt(numerico);
                Y += numeroN;
                //N123LSX

                String[] comandos4 = comandos3.split("");
                for (int i = 0; i < comandos4.length; i++) {
                    switch (comandos4[i]) {
                        case "S":
                            Y--;
                        case "L":
                            X++;
                            break;
                        case "O":
                            X--;
                            break;
                    }
                }
                System.out.printf("(%s,%d)%n", X, Y);

            }

            System.out.println(comandos3);



        }


    }

}
1 resposta

Fala mano beleza? Rodei aqui e fiz um teste com N123LXN123, mano eu percebi que seu String comandos = entrada.replaceAll("[a-zA-Z]+$", ""); está com algum erro, o que você queria fazer aqui? Porque por conta disso o seu código quando cair na condição do seu if (comandos.matches("[nN]\d+")) ele sempre vai dar false para esse caso, e com isso ele não vai executar a operação que você deseja. Se você me explicar melhor o que está tentando fazer nessas 3 partes do seu código acho que consigo te ajudar.:

String comandos = entrada.replaceAll("[a-zA-Z]+$", ""); String comandos2 = entrada.replaceAll("[a-zA-Z]+[0-9]+", ""); String comandos3 = entrada.replaceAll("^[0-9]+[xX]*", "");

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software