タイトルの説明:
座標計算ツールを開発します。Aは左に移動することを意味し、Dは右に移動することを意味し、Wは上に移動することを意味し、Sは下に移動することを意味します。(0,0)ポイントから移動を開始し、入力文字列からいくつかの座標を読み取り、最終的な入力結果を出力ファイルに出力します。
入る:
法定座標は、A(またはDまたはWまたはS)+数値(2桁以内)です。
座標は;で区切られます。
不正な座標点は破棄する必要があります。AA10、A1A、%など; YAD; 。
次のような簡単な例を次に示します。
A10; S20; W10; D30; X; A1A; B10A11 ;; A10;
処理プロセス:
開始点(0,0)
-
A10 =(-10.0)
-
S20 =(-10、-20)
-
W10 =(-10、-10)
-
D30 =(20、-10)
-
x =無効
-
A1A =無効
-
B10A11 =無効
-
ボイドは影響しません
-
A10 =(10、-10)
結果(10、-10)
複数の入力と出力のセットを処理してください
入力の説明:
1行の文字列
出力の説明:
コンマで区切られた最終座標
問題解決のアイデア:
最も重要なことは文字列のセグメンテーションです。セグメンテーションが完了すると、標準に従って合法かどうかが判断されます。合法である場合は調整処理に進み、そうでない場合は次の判断に進みます。
コード表示:
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);
}
}