Java 如何使用循环重复函数选择
我是一个新的java学习者。 现在,我正在做一个需要4个功能的项目。(比如f1,f2,f3,f4) 在每个函数完成后,我可以选择下一步调用哪个函数。 实际上,我已经完成了4个函数,但我不知道如何实现函数选择(我尝试使用嵌套的while循环,但我搞砸了) 如果有人能给我一些想法,我将不胜感激。 多谢各位Java 如何使用循环重复函数选择,java,Java,我是一个新的java学习者。 现在,我正在做一个需要4个功能的项目。(比如f1,f2,f3,f4) 在每个函数完成后,我可以选择下一步调用哪个函数。 实际上,我已经完成了4个函数,但我不知道如何实现函数选择(我尝试使用嵌套的while循环,但我搞砸了) 如果有人能给我一些想法,我将不胜感激。 多谢各位 import java.util.*; import java.io.*; public class driver { public static void main(String[] args)
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,则必须调用函数3(我尚未添加)必须调用,但我不知道如何在每个函数完成后进行选项选择,如在函数2完成后,我可以选择执行函数1、函数2、函数3或退出系统。如果您想拥有一组函数(方法)并选择以编程方式调用哪个函数,可以尝试以下操作: 首先使用执行函数所使用的方法创建一个接口。假设您的函数有一个
int
参数,并返回一个字符串
:
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);
IFunction f1=新的IFunction(){
@凌驾
公共字符串执行(int参数){
返回“始终此文本”;
}
};
IFunction f2=新的IFunction(){
@凌驾
公共字符串执行(int参数){
返回整数.toString(参数);
}
};
List flist=new ArrayList();
flist.add(f1);
flist.add(f2);
int choice=1;//可以使用用户输入填写;
flist.get(选择)、execute(3);
通过使用数组,您可以直接传递用户输入以获取。您可以使用
do while
循环和开关的组合来根据用户输入做出决策
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*/}
}
使用“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");
}
}
package com.loknath.lab;
导入java.util.Scanner;
公开课演示3{
公共静态void main(字符串[]args){
int a=0;
扫描仪键盘=新扫描仪(System.in);
做{
System.out.println(“chosewhat you want”);
System.out.println(“1-F1”);
系统输出打印项次(“2-F2”);
System.out.println(“3-F3”);
System.out.println(“4-F4”);
System.out.println(“0-退出”);
a=键盘.nextInt();
如果(a==1)
f1();
如果(a==2),则为else
f2();
如果(a==3),则为else
f3();
如果(a==4),则为else
f4();
如果((a>=5)| |(a<0))
System.out.println(“无效选择:请重试”);
}而(a!=0);
系统输出打印项次(“完成”);
}
公共静态无效f1(){
系统输出打印项次(“F1”);
}
公共静态无效f2(){
系统输出打印项次(“F2”);
}
公共静态无效f3(){
系统输出打印项次(“F3”);
}
公共静态无效f4(){
系统输出打印项次(“F4”);
}
}
共享您的代码,这样社区就可以帮助您,也可以说明您想要的结果/输出。因此,您希望用户在运行时输入以选择要执行的函数。您可以使用switch和whileyes的组合,我会尝试,谢谢!@xiao您可以按照下面的回答使用一个开关,然后调用f1.execute(参数)或f2.执行(参数)。我使用的数组是一种向您展示如何将函数作为对象来使用的方法。这样,当您添加新函数时,无需添加if
或switch
控制结构的新分支。明白了,实际上我还没有学习数组,我将在学习后尝试,非常感谢