2016-04-14 60 views
0

在下面的程序中,你可以看到,我已經允許用戶的輸入給出一個方向,如n100,這將向北繪製一條線,並將其移動100個空間,但我怎麼能夠允許草圖程序做對角線以及直線,我知道我可以通過使用像ne這樣的東西來改變輸入爲(0,2)以允許對角線,但是然後我的程序沒有'就像我使用n,e,s,w等方向一樣。 我可以做些什麼來允許兩條線? 這是下面的代碼:對角線和直線繪製在一個Java程序

enter image description here

boolean okToProcess = true; 
    String message = ""; 
    int colourInt; 

    String input = in.getText(); 
    String direction = input.substring(0, 1); 
    String distance = input.substring(1); 

    double distanceAsDouble = 0; 



    if (direction.equals("n")) 
     t.heading(0); 
    else if (direction.equals("ne")) 
     t.heading(45); 
    else if (direction.equals("e")) 
     t.heading(90); 
    else if (direction.equals("se")) 
     t.heading(135); 
    else if (direction.equals("s")) 
     t.heading(180); 
    else if (direction.equals("sw")) 
     t.heading(225); 
    else if (direction.equals("w")) 
     t.heading(270); 
    else if (direction.equals("nw")) 
     t.heading(315); 
    else { 
     okToProcess = false; 
     message += "bad direction: " + direction + " "; 
    } 


    if (isNumeric(distance)) { 
     distanceAsDouble = Double.parseDouble(distance); 
    } 
    else{ 
     okToProcess = false; 
     message += "bad distance: " + distance; 
    } 

    if (okToProcess) { 
     if (!EtchASketchClipped(t, distanceAsDouble)) { 
      t.setLineWidth(3); 
+0

不要使用'如果-else'聲明與垂直和horiztonal運動 – MadProgrammer

回答

0

如果使用

String direction = input.substring(0, 1); 
String distance = input.substring(1); 

存放和僅比較字符串的第一個字符,並最終爲無效號碼分配給距離,就好像方向是對角線方向一樣,第二個字符被預置爲方向。使用String.startsWith()檢查給定的方向。在if語句中,決定是否在第二個或第三個字符開始距離。您也可以使用輸入作爲值來檢查。

... 
String distance ; 
double distanceAsDouble = 0; 

if (input.startsWith("n")) { 
    t.heading(0); 
    distance = input.substring(1); 
} else if (input.startsWith("ne")) { 
    t.heading(45); 
    distance = input.substring(2); 
} else if ... 
0
String direction = input.replaceFirst("^(\\D*)(.*)$", "$1"); 
String distance = input.replaceFirst("^(\\D*)(.*)$", "$2").trim(); 

當正則表達式表示

  • \\D匹配非數字
  • \\d匹配數字
  • 後綴*爲0以上
  • .任何炭
  • ^開始
  • $結束1個
  • $ 1組編號
  • (組)1