检查命令行中是否有足够的引号 - java

时间:2017-10-17 19:19:40

标签: java input command-line args

我尝试使用命令行(args [0]和args [1])将数字列表合并为一个

顺便说一句,我想检查是否有足够的引号(因为所需的格式是("数字列表1和#34;"数字2和#34的列表;))知道我是否继续执行该计划的其余部分。

我尝试将args [0]和args [1]放在两个不同的字符串中并检查它们是否有引号,但它们没有。

我想知道如何检查命令行中的引号数。

这是我到目前为止所做的:

String exampleString = "\"12 1 14 -3 7\"" + "\"45 2 16 -6\"";

        int quoteCounter = 0;

        for(int i=0; i < args[0].length(); i++) {
            if(args[0].charAt(i) == '"') {
                quoteCounter++;
                }
            }
        for(int i=0; i < args[1].length(); i++) {
            if(args[1].charAt(i) == '"') {
                quoteCounter++;
                }
            }

        if (quoteCounter != 4) {
            System.out.println("Run the program again and respect the following format please (as many numbers as you want can be inputted) : \"" + exampleString + "\"");
            System.exit(1);
        } else {
            }

2 个答案:

答案 0 :(得分:0)

您无需检查任何引号。

如果您调用Intent intent = new Intent(this, YourActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish(); // call this to finish the previous activity (忽略Java通常不生成C:/> run.exe "1 2 3 4 5" "6 7 8 9 10"文件的事实,因为它无关紧要),参数列表将包含.exe和{{1当然,(和1 2 3 4 5),因为引号标记字符串忽略空格。

args本身没有得到引号。

其中的每个项目都是一个带引号的字符串,因此您只需将6 7 8 9 10数组的长度与2进行比较。

答案 1 :(得分:-1)

这段代码可以解决问题:

import java.util.*;

class Main
{
    /* This method checks whether a given argument is valid
     */
    private static boolean isValidArgument(String arg)
    {
        return arg.startsWith("\"") && arg.endsWith("\"");
    }

    /* This method converts an argument into a Set<Integer>
     */
    private static Set<Integer> toIntegerSet(String arg)
    {
        Set<Integer> s = new HashSet<>();
        for(String part : arg.substring(1, arg.length()-1).split(" "))
        {
            s.add(Integer.parseInt(part));
        }
        return s;
    }

    public static void main(String[] args)
    {
        String arg0 = "\"1 2 3 4 5\"";
        String arg1 = "\"5 6 7 8 9\"";
        if(!isValidArgument(arg0))
            System.err.println("Invalid argument at index 0");
        if(!isValidArgument(arg1))
            System.err.println("Invalid argument at index 1");

        // merge into a set (to avoid duplicates)
        Set<Integer> mergedSet = toIntegerSet(arg0);
        mergedSet.addAll(toIntegerSet(arg1));

        // turn into a list (to sort)
        List<Integer> mergedList = new ArrayList<>(mergedSet);
        java.util.Collections.sort(mergedList);

        // turn into array (for displaying)
        Integer[] mergedArray = mergedList.toArray(new Integer[mergedList.size()]);
        System.out.println(java.util.Arrays.toString(mergedArray));
    }
}

或者查看IdeOne上的实时版本

https://ideone.com/Ow2eEQ