2014-10-10 55 views
-1

試圖創建一個程序,其中用戶在我的主輸入2個數字,顯示菜單方法以顯示用戶想要使用switch語句對這兩個數字進行的操作,然後4個其他方法將根據用戶選擇的選項從菜單中。如何將int從我的主要方法傳遞給計算方法?

我的問題是如何將我存儲的2個int從我的主要通過我的其他4種方法進行計算?

我的解決方案是將請求和輸入2個整數的過程移動到我的菜單方法中,但是我的導師特別要求將main中的整數傳遞給方法。

這是我到目前爲止。 編輯我知道這個代碼編譯和作品,我想要的是是5行代碼要求並獲得在我的主要的2個整數,而不是我的菜單的方法編輯

public static void main (String [] args) 
    {  

     Scanner kb = new Scanner(System.in); //Allows input from keyboard 
     int iMenu;        //Holds menu 
     System.out.print ("\n\nPress ENTER to continue"); 
     kb.nextLine(); 
     iMenu = menu();       //Calls menu method 


    } 


public static int menu() 
{ 

     int iNum1;        //Holds user input for number 1 
     int iNum2;        //Holds user input for number 2 
     Scanner kb = new Scanner(System.in); //Allows input from keyboard 
     System.out.print("\nPlease enter the first integer: "); 
     iNum1 = kb.nextInt(); 
     System.out.print("\nPlease enter the second integer: "); 
     iNum2 = kb.nextInt(); 

     int iSelection;       //Holds menu selection 
     System.out.println("\n\t M E N U "); 
     System.out.println("\n1>Sum up two integers" + 
     "\n2>Find the difference of two integers" + 
     "\n3>Find the average of two integers" + 
     "\n4>Find the product of two integers" + 
     "\n5>Find the quotient of two integers"); 
     iSelection = kb.nextInt(); 
    //}  
     switch (iSelection) 
     { 
      case 1: 
       sumTwoNumbers(iNum1, iNum2); 
       break; 
      case 2: 
       subTwoNumbers(iNum1, iNum2); 
       break; 
      case 3: 
       avgTwoNumbers(iNum1, iNum2); 
       break; 
      case 4: 
       multiTwoNumbers(iNum1, iNum2); 
       break; 
      case 5: 
       divTwoNumbers(iNum1, iNum2); 
      } 
      return iSelection;    //End menu() 
     } 
     public static int sumTwoNumbers(int iNum1, int iNum2) 
     { 
      int iSum;      //Holds sum of iNum1 and iNum2 
      iSum = iNum1 + iNum2; 
      System.out.println(iSum); 
      return iSum;     //End sumTwoNumbers(int,int) 
     } 
     public static int subTwoNumbers(int iNum1, int iNum2) 
     { 
      int iSub;      //Holds difference of iNum1 and iNum2 
      iSub = iNum1 - iNum2; 
      System.out.println(iSub); 
      return iSub;     //End subTwoNumbers(int,int) 
     } 
     public static double avgTwoNumbers(int iNum1, int iNum2) 
     { 
      double dAvg;     //Holds average of iNum1 and iNum2 
      dAvg = (iNum1 + iNum2)/2; 
      System.out.println(dAvg); 
      return dAvg;     //End avgTwoNumbers(int,int) 
     } 
     public static int multiTwoNumbers(int iNum1, int iNum2) 
     { 
      int iMulti;      //Holds product of iNum1 and iNum2 
      iMulti = iNum1 * iNum2; 
      System.out.println(iMulti); 
      return iMulti;     //End multiTwoNumbers(int,int) 
     } 
     public static int divTwoNumbers(int iNum1, int iNum2) 
     { 
      int iDiv;      //Holds quotient of iNum1 and iNum2 
      iDiv = iNum1/iNum2; 
      System.out.println(iDiv); 
      return iDiv;     //End divTwoNumbers(int,int) 
     } 

當我移動(輸入2點的整數)到我的主,我得到的錯誤的負載大多是「不能在我所有的方法,例如找到符號:

Proj2.java:78: error: cannot find symbol 
        avgTwoNumbers(iNum1, iNum2); 
           ^
    symbol: variable iNum1 
    location: class Proj2 
Proj2.java:78: error: cannot find symbol 
        avgTwoNumbers(iNum1, iNum2); 
             ^

我假設它是因爲INT WASN沒有正確地傳遞給我的方法,但我不知道如何去做。

+0

也許Java的一個基本的瞭解,您就可以回答你自己的問題。 – Qix 2014-10-10 16:50:23

+0

謝謝,感謝。 – ChelseaH 2014-10-10 16:58:10

回答

0

傳遞的數字作爲參數傳遞給menu()方法:

public static void main (String [] args) 
{  

    Scanner kb = new Scanner(System.in); //Allows input from keyboard 
    int iMenu;        //Holds menu 
    System.out.print ("\n\nPress ENTER to continue"); 
    kb.nextLine(); 

    int iNum1;        //Holds user input for number 1 
    int iNum2;        //Holds user input for number 2 

    System.out.print("\nPlease enter the first integer: "); 
    iNum1 = kb.nextInt(); 
    System.out.print("\nPlease enter the second integer: "); 
    iNum2 = kb.nextInt(); 

    iMenu = menu(iNum1, iNum2);       //Calls menu method 

} 


public static int menu(int iNum1, int iNum2) 
{ 
    /* rest of the menu code */ 
} 
+0

謝謝!所以iMenu =菜單(iNum1,iNum2)是輸入數字通過的位置? – ChelseaH 2014-10-10 17:14:34

0
public static void main (String [] args) 
{ 
    Scanner kb = new Scanner(System.in); //Allows input from keyboard 
    int iNum1;        //Holds user input for number 1 
    int iNum2;        //Holds user input for number 2 
    int iSelection;       //Holds menu selection 

    System.out.print("\nPlease enter the first integer: "); 
    iNum1 = kb.nextInt(); 
    System.out.print("\nPlease enter the second integer: "); 
    iNum2 = kb.nextInt(); 
    System.out.println("\n\t M E N U "); 
    System.out.println("\n1>Sum up two integers" + 
      "\n2>Find the difference of two integers" + 
      "\n3>Find the average of two integers" + 
      "\n4>Find the product of two integers" + 
      "\n5>Find the quotient of two integers"); 
    iSelection = kb.nextInt(); 
    doAction(iNum1,iNum2,iSelection); 
} 

private static void doAction(int iNum1, int iNum2, int iSelection) { 
    switch (iSelection) 
    { 
    case 1: 
     sumTwoNumbers(iNum1, iNum2); 
     break; 
    case 2: 
     subTwoNumbers(iNum1, iNum2); 
     break; 
    case 3: 
     avgTwoNumbers(iNum1, iNum2); 
     break; 
    case 4: 
     multiTwoNumbers(iNum1, iNum2); 
     break; 
    case 5: 
     divTwoNumbers(iNum1, iNum2); 
    } 
} 

private static int sumTwoNumbers(int iNum1, int iNum2) 
{ 
    int iSum;      //Holds sum of iNum1 and iNum2 
    iSum = iNum1 + iNum2; 
    System.out.println(iSum); 
    return iSum;     //End sumTwoNumbers(int,int) 
} 

private static int subTwoNumbers(int iNum1, int iNum2) 
{ 
    int iSub;      //Holds difference of iNum1 and iNum2 
    iSub = iNum1 - iNum2; 
    System.out.println(iSub); 
    return iSub;     //End subTwoNumbers(int,int) 
} 

private static double avgTwoNumbers(int iNum1, int iNum2) 
{ 
    double dAvg;     //Holds average of iNum1 and iNum2 
    dAvg = (iNum1 + iNum2)/2; 
    System.out.println(dAvg); 
    return dAvg;     //End avgTwoNumbers(int,int) 
} 

private static int multiTwoNumbers(int iNum1, int iNum2) 
{ 
    int iMulti;      //Holds product of iNum1 and iNum2 
    iMulti = iNum1 * iNum2; 
    System.out.println(iMulti); 
    return iMulti;     //End multiTwoNumbers(int,int) 
} 

private static int divTwoNumbers(int iNum1, int iNum2) 
{ 
    int iDiv;      //Holds quotient of iNum1 and iNum2 
    iDiv = iNum1/iNum2; 
    System.out.println(iDiv); 
    return iDiv;     //End divTwoNumbers(int,int) 
} 
+0

謝謝,我應該看到這一點,但根據我的教官的指示,我需要將這5行代碼放入我的主內容中,這是我收到錯誤的時候。 – ChelseaH 2014-10-10 16:55:01

+0

請檢查編輯! – StackFlowed 2014-10-10 17:18:14

+0

欣賞它,我做了Sizik所建議的,並且一切順利,我想把iMenu =菜單(iNum1,iNum2)解決了我遇到的問題。 – ChelseaH 2014-10-10 17:20:52

0

您需要讓menu接受要傳遞給它的參數。你可以改變這個方法的簽名,以更多的東西一樣

public static int menu(int argument) 
{ 
    //your code 
} 

,並使用它像

int parameter = ... 
int result = menu(parameter); 
+0

誰低估了這個,爲什麼?至少說爲什麼? – brso05 2014-10-10 17:00:37

0

什麼ü需要做的是從你的主要方法,在方法中添加參數,並通過他們

採取所有輸入中的主要方法,並將其傳遞給該方法

{ 
    public static void main (String [] args) 
    {  

     Scanner kb = new Scanner(System.in); //Allows input from keyboard 




      int iNum1;        //Holds user input for number 1 
      int iNum2;        //Holds user input for number 2 
      Scanner kb = new Scanner(System.in); //Allows input from keyboard 
      System.out.print("\nPlease enter the first integer: "); 
      int iNum1 = kb.nextInt(); 
      System.out.print("\nPlease enter the second integer: "); 
      int iNum2 = kb.nextInt(); 

      int iSelection;       //Holds menu selection 
      System.out.println("\n\t M E N U "); 
      System.out.println("\n1>Sum up two integers" + 
      "\n2>Find the difference of two integers" + 
      "\n3>Find the average of two integers" + 
      "\n4>Find the product of two integers" + 
      "\n5>Find the quotient of two integers"); 
      iSelection = kb.nextInt(); 

    Create object of your class here and call the method dont knw whats ur class name so for eg 
    class1 cl = new class1(); 
cl.menu(iNum1,iNum2,iSelection); 
    } 


    public static int menu(int iNum1,int iNum2,int iSelection) 
    { 

     //}  
      switch (iSelection) 
      { 
       case 1: 
        sumTwoNumbers(iNum1, iNum2); 
        break; 
       case 2: 
        subTwoNumbers(iNum1, iNum2); 
        break; 
       case 3: 
        avgTwoNumbers(iNum1, iNum2); 
        break; 
       case 4: 
        multiTwoNumbers(iNum1, iNum2); 
        break; 
       case 5: 
        divTwoNumbers(iNum1, iNum2); 
       } 
       return iSelection;    //End menu() 
      } 
      public static int sumTwoNumbers(int iNum1, int iNum2) 
      { 
       int iSum;      //Holds sum of iNum1 and iNum2 
       iSum = iNum1 + iNum2; 
       System.out.println(iSum); 
       return iSum;     //End sumTwoNumbers(int,int) 
      } 
      public static int subTwoNumbers(int iNum1, int iNum2) 
      { 
       int iSub;      //Holds difference of iNum1 and iNum2 
       iSub = iNum1 - iNum2; 
       System.out.println(iSub); 
       return iSub;     //End subTwoNumbers(int,int) 
      } 
      public static double avgTwoNumbers(int iNum1, int iNum2) 
      { 
       double dAvg;     //Holds average of iNum1 and iNum2 
       dAvg = (iNum1 + iNum2)/2; 
       System.out.println(dAvg); 
       return dAvg;     //End avgTwoNumbers(int,int) 
      } 
      public static int multiTwoNumbers(int iNum1, int iNum2) 
      { 
       int iMulti;      //Holds product of iNum1 and iNum2 
       iMulti = iNum1 * iNum2; 
       System.out.println(iMulti); 
       return iMulti;     //End multiTwoNumbers(int,int) 
      } 
      public static int divTwoNumbers(int iNum1, int iNum2) 
      { 
       int iDiv;      //Holds quotient of iNum1 and iNum2 
       iDiv = iNum1/iNum2; 
       System.out.println(iDiv); 
       return iDiv;     //End divTwoNumbers(int,int) 
      } 
1

唯一我用這個代碼編譯的問題是iNum1iNum2聲明瞭兩次。

還讓我爲您提供更好的語法/約定:

import java.util.Scanner; 

class Calculator 
{ 
    public Calculator() 
    { 
     Scanner kb = new Scanner(System.in); 

     System.out.print("\n\nPress ENTER to continue"); 
     kb.nextLine(); 
     this.menu(); 
    } 

    public int menu() 
    {  
     Scanner kb = new Scanner(System.in); 
     System.out.print("\nPlease enter the first integer: "); 
     int iNum1 = kb.nextInt(); 
     System.out.print("\nPlease enter the second integer: "); 
     int iNum2 = kb.nextInt(); 

     int iSelection = 0; 
     System.out.println("\n\t M E N U "); 
     System.out.println("\n1>Sum up two integers" 
       + "\n2>Find the difference of two integers" 
       + "\n3>Find the average of two integers" 
       + "\n4>Find the product of two integers" 
       + "\n5>Find the quotient of two integers"); 
     iSelection = kb.nextInt(); 

     switch (iSelection) 
     { 
      case 1: 
       Calculator.sumTwoNumbers(iNum1, iNum2); 
       break; 
      case 2: 
       Calculator.subTwoNumbers(iNum1, iNum2); 
       break; 
      case 3: 
       Calculator.avgTwoNumbers(iNum1, iNum2); 
       break; 
      case 4: 
       Calculator.multiTwoNumbers(iNum1, iNum2); 
       break; 
      case 5: 
       Calculator.divTwoNumbers(iNum1, iNum2); 
      default: 
       System.out.println("Option : " + iSelection + "not handled."); 
     } 

     return iSelection; 
    } 

    public static int sumTwoNumbers(int iNum1, int iNum2) 
    { 
     int iSum = iNum1 + iNum2; 
     System.out.println(iSum); 
     return iSum;     //End sumTwoNumbers(int,int) 
    } 

    public static int subTwoNumbers(int iNum1, int iNum2) 
    { 
     int iSub = iNum1 - iNum2; 
     System.out.println(iSub); 
     return iSub;     //End subTwoNumbers(int,int) 
    } 

    public static double avgTwoNumbers(int iNum1, int iNum2) 
    { 
     double dAvg = (iNum1 + iNum2)/2; 
     System.out.println(dAvg); 
     return dAvg;     //End avgTwoNumbers(int,int) 
    } 

    public static int multiTwoNumbers(int iNum1, int iNum2) 
    { 
     int iMulti = iNum1 * iNum2; 
     System.out.println(iMulti); 
     return iMulti;     //End multiTwoNumbers(int,int) 
    } 

    public static int divTwoNumbers(int iNum1, int iNum2) 
    { 
     int iDiv = iNum1/iNum2; 
     System.out.println(iDiv); 
     return iDiv;     //End divTwoNumbers(int,int) 
    } 

    public static void main(String[] args) 
    { 
     new Calculator(); 
    } 
}