Desarrolle una herramienta de cálculo de coordenadas, A significa moverse hacia la izquierda, D significa moverse hacia la derecha, W significa moverse hacia arriba y S significa moverse hacia abajo. Empiece a moverse desde el punto (0,0).

Descripción del título :

Desarrolle una herramienta de cálculo de coordenadas, A significa moverse hacia la izquierda, D significa moverse hacia la derecha, W significa moverse hacia arriba y S significa moverse hacia abajo. Comience a moverse desde el punto (0,0), lea algunas coordenadas de la cadena de entrada y envíe el resultado de entrada final al archivo de salida.

ingresar:

Las coordenadas legales son A (o D o W o S) + número (dentro de dos dígitos)

Las coordenadas están separadas por;.

Los puntos de coordenadas ilegales deben descartarse. Como AA10; A1A; %; YAD; 等.

Aquí hay un ejemplo simple como:

A10; S20; W10; D30; X; A1A; B10A11 ;; A10;

Proceso de procesamiento:

Punto de partida (0,0)

  • A10 = (-10.0)

  • S20 = (-10, -20)

  • W10 = (-10, -10)

  • D30 = (20, -10)

  • x = inválido

  • A1A = inválido

  • B10A11 = no válido

  • Un vacío no afecta

  • A10 = (10, -10)

Resultado (10, -10)

Maneje múltiples conjuntos de entrada y salida

Descripción de entrada:
una línea de cadena

Descripción de salida:
coordenadas finales, separadas por comas

Ideas para la resolución de problemas: Lo
más importante es la segmentación de cadenas. Una vez completada la segmentación, se juzga si es legal de acuerdo con el estándar. Si es legal, proceda a coordinar el procesamiento, de lo contrario, proceda al siguiente juicio.

Visualización de código:

import java.util.Scanner;
public class Main{
    
    
    public static void main(String[] args){
    
    
        Scanner sc=new Scanner(System.in);
        int i=0;
        int j=0;
        String str=sc.nextLine();
        String[] st=str.split(";");
        for(int k=0;k<st.length;k++){
    
    
            boolean flag=true;
            int step=0;
            if(st[k].length()<=1){
    
    
                continue;
            }
            for(int x=1;x<st[k].length();x++){
    
    
                if(!(st[k].charAt(x)<='9'&&st[k].charAt(x)>='0')){
    
    
                    flag=false;
                    break;//不符合规范的舍弃

                }

            }
            if(flag){
    
    
                String s=st[k].substring(1);
                step=Integer.parseInt(s,10);
            }else{
    
    
                continue;
            }

            char ch=st[k].charAt(0);
            switch(ch){
    
    
                case 'A':
                    i-=step;
                    break;
                case 'D':
                    i+=step;
                    break;
                case 'W':
                    j+=step;
                    break;
                case 'S':
                    j-=step;
                    break;
            }

        }System.out.println(i+","+j);
    }
}



Supongo que te gusta

Origin blog.csdn.net/weixin_43815275/article/details/114744033
Recomendado
Clasificación