如何在java中编写命令行参数,以及如何将字符串转换为int

如何在java中编写命令行参数,以及如何将字符串转换为int,java,Java,您当前的代码显示了您的努力,在正确的轨道上,并且实际上包含了实际获得工作解决方案所需的所有部分。我重构了countPositive方法以直接接受命令行参数的字符串数组。请注意,没有理由创建整数数组;您可以简单地解析每个命令行参数并动态分析它 > java count 1 2 3 4 5 -1 -2 -3 5 > java count 0 -1 -2 -3 -3 -4 0 您有两种选择-要么添加第二个数组,要么动态计算正数 > java count 1 2 3 4

您当前的代码显示了您的努力,在正确的轨道上,并且实际上包含了实际获得工作解决方案所需的所有部分。我重构了countPositive方法以直接接受命令行参数的字符串数组。请注意,没有理由创建整数数组;您可以简单地解析每个命令行参数并动态分析它

> java count 1 2  3 4 5 -1 -2 -3
5  

> java count 0 -1 -2 -3 -3 -4  
0

您有两种选择-要么添加第二个数组,要么动态计算正数

> java count 1 2  3 4 5 -1 -2 -3
5  

> java count 0 -1 -2 -3 -3 -4  
0
第一种解决方案-首先将字符串转换为整数,然后计算正整数:

public class count {
    private static int countPositive(String[] elems) {
       int positive = 0;
       for (int i=0; i < elems.length; i++) {
           int element = Integer.parseInt(elems[i]);
           if (element > 0) {
               positive++;
           }
       }

       return positive;
    }

    public static void main(String[] args) {
        int count = countPositive(args);
        System.out.println(count));
    }
}

您可以从将字符串[]args复制到int[]开始,然后使用它调用countPositive。像


那么错误或问题是什么呢?我是否必须添加另一个数组来保存这些整数,然后调用countPositive?是的。这比添加一个新的int数组要好+1.
public class count {
    private static int countPositive(int[] elems) {
        int positive = 0;
        for (int i = 0; i < elems.length; i++) {
            if (elems[i] > 0) {
                positive++;
            }
        }
        return positive;
    }

    public static void main(String[] args) {

        int[] intArr = new int[args.length];
        for (int i = 0; i < args.length; i++) {
            intArr[i] = Integer.parseInt(args[i]);
        }
        System.out.println(countPositive(intArr));
    }
}
public class count {
    public static void main(String[] args) {
        int positive = 0;
        for (int i = 0; i < args.length; i++) {
            if (Integer.parseInt(args[i]) > 0) {
                positive++;
            }
        }
        System.out.println(positive);
    }
}
public class count {
    public static void main(String[] args) {
        System.out.println(Arrays.stream(args).mapToInt(i -> Integer.parseInt(i)).filter(i -> i>0).count());
    }
}
public static void main(String[] args) {
    int[] values = new int[args.length];
    for (int i = 0; i < args.length; i++) {
        values[i] = Integer.parseInt(args[i]);
    }
    System.out.println(countPositive(values));
}
System.out.println(Stream.of(args).mapToInt(Integer::parseInt)
        .filter(val -> val > 0).count());