如何使用循环重复功能选择

时间:2014-04-17 06:40:40

标签: java

我是一个新的java瘦身。 现在,我正在开展一个需要4个功能的项目。(如f1,f2,f3,f4) 每个功能完成后,我可以选择下一个要调用的功能。 其实我已经完成了4个功能,但我不知道如何实现功能选择(我尝试使用嵌套的while循环,但我搞砸了) 如果有人能给我一些想法,我将不胜感激。 谢谢。

import java.util.*;
import java.io.*;
public class driver
{
public static void main(String[] args) 
{
    Scanner keyboard = new Scanner(System.in);
    System.out.println("chosewhat you want");
    int a = keyboard.nextInt();
    keyboard.nextLine();
    ObjectOutputStream objOut = null;
    ObjectInputStream objIn = null;
    Pet p = null;
    Person owner = null;

    while (a==1)
    {
    try 
    {
        objOut = new ObjectOutputStream(new FileOutputStream("pet.dat"));
        owner = new Person();
        p = new Mammal();
        owner.getInput();
        p.owner = owner;
        p.getInput();
        objOut.writeObject(p);
        objOut.close();

        a = keyboard.nextInt();
        keyboard.nextLine();
    } 

    catch (Exception e) 
    {
        System.out.println("here!!!");
    }
    }

    while ( a == 2)
    {
    try 
    {
        objIn = new ObjectInputStream(new FileInputStream("pet.dat"));

        try 
        {
            while(true)
            {
                p = (Pet)objIn.readObject();
                System.out.println(p);
            }

        } 
        catch (EOFException e) 
        {
            System.out.println("System ends");
        }
    } 

    catch (Exception e)
     {
        System.out.println("something in driver");
    }
    a = keyboard.nextInt();
    keyboard.nextLine();

    }
}
}

以上是我的代码, 如果我按1,则必须调用写入功能,如果按下2,则必须调用读取功能函数,如果我输入3,则必须调用function3(我还没有添加),但我不会知道每个函数完成后如何选择选项,比如在function2完成后,我可以选择执行function1,function2,function3或退出系统。

3 个答案:

答案 0 :(得分:1)

您可以使用do while循环和switch的组合来根据用户输入做出决策

public class Test{

  public static void main(String args[]){
       Scanner sc = new Scanner(System.in);
       int choice;

       do{
         choice = sc.nextInt();
         switch(choice){

           case 1: function1();
                   break;
           case 2: function2();
                   break;
           case 3: function3();
                   break;
           case 4: function4();
                   break;

          }

        }while(choice!=0);
   }

public static void function1(){/*definition*/}
public static void function2(){/*definition*/}
public static void function3(){/*definition*/}
public static void function4(){/*definition*/}

}

答案 1 :(得分:0)

如果您想拥有一组函数(方法)并选择以编程方式调用哪些函数,可以尝试以下方法:

首先使用将用于执行该功能的方法创建一个接口。假设您的函数有一个int参数并返回String

public interface IFunction {
    public String execute(int parameter);
}

然后,您可以通过匿名内部类指定IFunction来定义具体函数:

IFunction f1 = new IFunction() {

    @Override
    public String execute(int parameter) {
        return "Always this text";
    }
};

IFunction f2 = new IFunction() {

    @Override
    public String execute(int parameter) {
        return Integer.toString(parameter);
    }
};

List<IFunction> flist = new ArrayList<>();
flist.add(f1);
flist.add(f2);

int choice = 1; //This can be filled using user input;

flist.get(choice).execute(3);

通过使用数组,您可以直接将用户输入传递给get。

答案 2 :(得分:0)

使用“do while”进行重复,条件匹配.. “if else”用于选择功能

package com.loknath.lab;
import java.util.Scanner;
public class Demo3 {
        public static void main(String[] args) {
    int a = 0;
    Scanner keyboard = new Scanner(System.in);

    do {
        System.out.println("chosewhat you want");
        System.out.println("1 - F1");
        System.out.println("2 - F2");
        System.out.println("3 - F3");
        System.out.println("4 - F4");
        System.out.println("0 - exit");

        a = keyboard.nextInt();
        if (a == 1)
            f1();
        else if (a == 2)
            f2();
        else if (a == 3)
            f3();
        else if (a == 4)
            f4();
        else if ((a >= 5) || (a < 0))
            System.out.println("Invalid Choice: Please try again");
    } while (a != 0);
    System.out.println("Done");
}

public static void f1() {
    System.out.println("F1");
}

public static void f2() {
    System.out.println("F2");
}

public static void f3() {
    System.out.println("F3");
}

public static void f4() {
    System.out.println("F4");
}

 }