2014-10-10 43 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(); 
    } 
}