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);
}
}