2012-11-13 31 views
-4

我有一個程序代碼被困在這裏:這裏是說明:http://my.fit.edu/~akhademzadeh2011/courses/cse1001/f2012/ass/ass04.pdf麻煩與使用Java程序的參數和方法

而且,這是我的代碼:

import java.util.*; 

public class PantherSolver { 

public static void main(String[] args) { 
    Scanner kb = new Scanner(System.in); 
    String input; 
    String p = "0|          |"; 
    int signcontrol = 1; 

    input = GUI(p); 
    int firstnumber = inputmethod(input); 
    int firstsign = sign(input,signcontrol); 
    String secondp = p1(firstsign,firstnumber,p); 

    String input2 = GUI(secondp); 
} 

public static String p1(int firstsign,int firstnumber, String p) { 
     if (firstsign>0) { 
      p = "0|         "+ firstnumber +" |"; 
     } 
     else { 
      p = "0|         -"+ firstnumber +" |"; 
     } 
     return p; 
    } 

public static String GUI1(String secondp) { 
     Scanner kb = new Scanner(System.in); 
     String newinput = kb.nextLine(); 
     System.out.println("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
     System.out.println(" ========================================"); 
     System.out.println(secondp); 
     System.out.println("1|--------------------------------------|"); 
     System.out.println("2| OFF       +/- AC |"); 
     System.out.println("3| 1 2 3 4 5      ,  |"); 
     System.out.println("4| 6 7 8 9 0      SOLVE |"); 
     System.out.println(" ========================================"); 
     System.out.println(" Key: " + newinput +""); 

     return newinput; 
    } 

public static String GUI(String p) { 
    Scanner kb = new Scanner(System.in); 

    System.out.println("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
    System.out.println(" ========================================"); 
    System.out.println(p); 
    System.out.println("1|--------------------------------------|"); 
    System.out.println("2| OFF       +/- AC |"); 
    System.out.println("3| 1 2 3 4 5      ,  |"); 
    System.out.println("4| 6 7 8 9 0      SOLVE |"); 
    System.out.println(" ========================================"); 
    String input1=kb.nextLine(); 
    System.out.println(" Key: " + input1 +""); 

    return input1; 
} 

public static int inputmethod(String input) { 
    Scanner kb = new Scanner(System.in); 
     int a = 0; 
     if (input.length()==2) { 
       if((input.charAt(0)=='0')||(input.charAt(0)=='1')) { 
       ; 
       } 
       else if((input.charAt(0)=='2') && !((input.charAt(1)==('0'))||(input.charAt(1)==('1'))||(input.charAt(1)==('2'))||(input.charAt(1)==('S'))||(input.charAt(1)==('T'))||(input.charAt(1)==('U'))||(input.charAt(1)==('V'))||(input.charAt(1)==('W'))||(input.charAt(1)==('X'))||(input.charAt(1)==('Y'))||(input.charAt(1)==('Z')))) { 
        ; 
       } 
       else if((input.charAt(0)=='3') && !((input.charAt(1)==('0'))||(input.charAt(1)==('2'))||(input.charAt(1)==('4'))||(input.charAt(1)==('6'))||(input.charAt(1)==('8'))||(input.charAt(1)==('T'))||(input.charAt(1)==('U')))) { 
        ; 
       } 
       else if((input.charAt(0)=='4') && !((input.charAt(1)==('0'))||(input.charAt(1)==('2'))||(input.charAt(1)==('4'))||(input.charAt(1)==('6'))||(input.charAt(1)==('8'))||(input.charAt(1)==('U'))||(input.charAt(1)==('V'))||(input.charAt(1)==('W'))||(input.charAt(1)==('X'))||(input.charAt(1)==('Y'))||(input.charAt(1)==('Z')))) { 
        ; 
       } 
       else if ((input.equals("20")) || (input.equals("21")) ||(input.equals("22")) ||(input.equals("2S")) ||(input.equals("2T")) ||(input.equals("2U")) ||(input.equals("2V")) ||(input.equals("2X")) ||(input.equals("2Y")) ||(input.equals("2Z")) ||(input.equals("30")) ||(input.equals("32")) ||(input.equals("34")) ||(input.equals("36")) ||(input.equals("38")) ||(input.equals("40")) ||(input.equals("42")) ||(input.equals("44")) ||(input.equals("46")) ||(input.equals("48")) ||(input.equals("4U")) ||(input.equals("4V")) ||(input.equals("4W")) ||(input.equals("4X")) ||(input.equals("4Y")) ||(input.equals("4Z"))) { 
        switch(input) { 
        case "20": 
        case "21": 
        case "22": 
         OFF(); 
         break; 
        case "2X": 
        case "2Y": 
        case "2Z": 
         main(null); 
         break; 
        case "30": 
         a = 1; 
         break; 
        case "32": 
         a = 2; 
         break; 
        case "34": 
         a = 3; 
         break; 
        case "36": 
         a = 4; 
         break; 
        case "38": 
         a = 5; 
         break; 
        case "40": 
         a = 6; 
         break; 
        case "42": 
         a = 7; 
         break; 
        case "44": 
         a = 8; 
         break; 
        case "46": 
         a = 9; 
         break; 
        case "48": 
         a = 0; 
         break; 
        case "4U": 
        case "4V": 
        case "4W": 
        case "4X": 
        case "4Y": 
        case "4Z": 
         solve(); 
         break; 
        } 
       } 
       else { 
        System.out.println("Invalid key."); 
        System.out.println(" Key: " + input+""); 
        inputmethod(input); 
       } 
      } 
     else { 
      System.out.println("Invalid key."); 
      System.out.println(" Key: " + input +""); 
      inputmethod(input); 
     } 
     return a; 
    } 

public static int sign (String input, int signcontrol) { 
    int sign1 = signcontrol; 
    if ((input.equals("2S")) ||(input.equals("2T")) ||(input.equals("2U")) ||(input.equals("2V"))) { 
     sign1 = sign1 * -1; 
    } 
    else { 
     sign1=1; 
    } 
    return sign1; 
} 

public static void OFF() { 
    System.exit(0); 
} 

public static void solve() { 

} 
} 

我在哪裏何去何從?我被困在很多地方。有人可以指導我嗎?首先,我在方法上遇到問題。我使用了幾種方法來顯示「Panther Solver」並獲得輸入。

作業要求顯示「Panther Solve」,然後用戶選擇他/她想要的數字。 IE「32」的意思是2.這是非常棘手的。如果用戶在數字之前選擇+/-符號,則會將他/她所輸入的值更改爲負值。但是,它不會立即顯示負號,而只是在他/她選擇數字之後才顯示負號。

每次您選擇數字並按下回車鍵,屏幕都會自動重新加載,並在答案鍵中顯示您輸入的內容。在「0」行中,它還會顯示您剛剛選擇的內容。

如果選擇數字後選擇+/-符號,則不會發生任何事情。如果您選擇任何與輸入無關的有效密鑰,則不會發生任何情況。就像二次方程一樣,用a,b,c,你輸入你的第一個響應(a),然後輸入逗號,然後去b,然後逗號,然後c,然後求解。每次輸入時,輸入都會被評估。

在輸入中,如果需要,所有字母必須大寫,否則您將返回「無效密鑰」。另外,對於等式,如果a = 0,則返回「錯誤」。

我還必須使用i爲虛數制定解決方案。

我被困在所有的部分。我的問題是,我在哪裏從我的代碼中出發。 我的第一個問題是讓「豹解算器」先顯示,然後接受輸入。下一個被評估爲負/正號,並且如果它在數字之後或之前。如果它來了,什麼都不要做。如果之前,將該值更改爲負值。

另一個正試圖在主要陳述中爲所有這些做一個循環。因爲對於二次方程中的「a」,用戶可能想要輸入「100」。所以我必須循環。

最後,在「0」行,我必須顯示以前的用戶輸入,就像實際的計算器一樣。我很難解決這個問題,並且讓它合適。例如,「a」從輸入的兩個空格開始。很顯然,輸入的內容越多,「a」就會向左移動。

感謝

+0

從常見問題解答:太局部化 這個問題不太可能有助於未來的訪問者;它只與一個小的地理區域,一個特定的時刻或一個非常狹窄的情況有關,而這種情況通常不適用於全球互聯網用戶。 –

+0

這是什麼意思 – user1678292

+0

它來自FAQ:http://stackoverflow.com/faq#dontask –

回答

2

像所有的初學者,你讓這個問題太難了,未能將其分解成足夠小的塊。

忘掉用戶輸入和接口。獲得基本解算器算法,使用您知道答案的硬接線輸入。寫下來,測試一下,然後放在一邊。然後開始開發另一個只處理輸入值並將它們傳遞給實際完成該工作的類的類。

當你發現自己被太多的細節所淹沒時,將問題簡化成可處理的較小部分。然後將它們編織在一起解決您的大問題。

這是調用分解。它是解決所有問題的基礎,尤其是編程和計算機科學。

對於善良的緣故,它的解一元二次方程。豹?不必要的混淆。

不要被名字所迷惑。忘掉所有那些奇特的輸出並讓基礎解算器工作。有一些特殊情況你需要關注:

  1. 兩個真正的根。
  2. 一個零根,一個真正的根。
  3. 兩個複共軛根。
+0

我已經做得綽綽有餘了。如果你不明白這一點,我現在就放棄這門課。沒有人在這裏欠你什麼。停止抱怨。 – duffymo