读取用户输入和执行方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取用户输入和执行方法相关的知识,希望对你有一定的参考价值。

我想从控制台读取用户输入并在此之后执行特定方法。例如:用户键入“java calculator faculty 5”或“java calculator divide 20 5.现在程序进入班级教师或划分并使用给定的数字计算结果。

类计算器的一个例子:

public class Calculator {
public static void main(String[] args) {
    String[] values = new String[3];

    Scanner in = new Scanner(System.in);
    String line = in.nextLine();

    values = line.split(",");
        int x = Integer.parseInt(values[1]);
        int y = Integer.parseInt(values[2]);

        if(values[0] == "divide") {
        Divide.divination(x,y);
        }
    }       
}
}

阶级占卜的一个例子:

public class Divide {
    public static int divination(int x, int y) {
            int sum = x / y;
            return sum;
        }
}
答案

完全没有指明的问题。它关于您的应用程序的设计。你谈论输入然后我们有一些课。没有代码,我们什么都不能做。也许有点帮助。您需要一些输入机制(例如Scanner),拆分输入字符串并与您的业务逻辑进行一些匹配。

核心理念:输入:

Scanner sc = new Scanner(System.in);
String input = sc.next();
String[] array = input.Split(' ');
另一答案

但是,如果您愿意使用命令行参数中的参数(如您的问题中所指定的那样),那么问题就不够明确了

“java计算器教员5”或“java计算器划分20 5。

这可能是一个选择:

import java.util.Arrays;
import java.util.List;

public class Calculator {

    public static final String TARGET_FACULTY = "faculty";
    public static final String TARGET_DIVIDE = "divide";

    public static void faculty(List<String> args) {
        System.out.println("Hello from faculty : " + args);
        // more logic to go here
    }

    public static void divide(List<String> args) {
        System.out.println("Hello from divide : " + args);
        // do you thing here
    }

    public static void main(String[] args) {
        if (!validateInput(args)) {
            System.out.println("Invalid options! usage: java Calculator <target> <options>");
            return;
        }
        List<String> additionalParameter = Arrays.asList(args).subList(1, args.length);
        switch (args[0]) {
        case TARGET_FACULTY: {
            faculty(additionalParameter);
            break;
        }
        case TARGET_DIVIDE: {
            divide(additionalParameter);
            break;
        }
        default:
            // Expected default behavior here
            throw new IllegalArgumentException("Operation unknown");
        }

    }

    private static boolean validateInput(String[] args) {
        // Add more logic here
        // - validate the target function
        // - validate the additional parameters for that function
        return args.length > 1;
    }
}

否则,您可以从控制台读取参数:

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Calculator {

    public static final String T_FACULTY = "faculty";
    public static final String T_DIVIDE = "divide";

    public static void faculty(List<String> args) {
        System.out.println("Hello from faculty : " + args);
        // more logic to go here
    }

    public static void divide(List<String> args) {
        System.out.println("Hello from divide : " + args);
        // do you thing here
    }

    public static void main(String[] args) {

        List<String> params = readFromConsole();
        if (!validateInput(params)) {
            System.out.println("Invalid options! usage: java Calculator <target> <options>");
            return;
        }
        String target = params.get(0);
        List<String> extraParams = params.subList(1, params.size());
        switch (target) {
        case T_FACULTY: {
            faculty(extraParams);
            break;
        }
        case T_DIVIDE: {
            divide(extraParams);
            break;
        }
        default:
            // Expected default behavior here
            throw new IllegalArgumentException("Operation unknown");
        }

    }

    private static List<String> readFromConsole() {
        // To be adapted
        return Arrays.asList(new Scanner(System.in).nextLine().split(" "));
    }

    private static boolean validateInput(List<String> params) {
        // Add more logic here
        // - validate the target function
        // - validate the additional parameters for that function
        return params.size() > 1;
    }
}

如果您期待别的东西,请不要犹豫更具体:)

干杯!

以上是关于读取用户输入和执行方法的主要内容,如果未能解决你的问题,请参考以下文章

是否可以动态编译和执行 C# 代码片段?

我怎么知道 QProcess 何时想要读取输入?

当 ViewPager 中的片段出现和消失时如何执行一些代码

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

Sleep() 方法后的代码片段没有被执行

为 C 读取用户输入字符串的最佳方法? [复制]