我是一个新的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或退出系统。
答案 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");
}
}