java中如何处理String args[]中的逗号

Posted

技术标签:

【中文标题】java中如何处理String args[]中的逗号【英文标题】:how to deal with the comma in String args[] in java 【发布时间】:2021-05-15 09:44:57 【问题描述】:

我的代码运行良好,没有在命令中传递任何逗号。我不确定如何更改代码以处理命令中的逗号。

这就是我现在拥有的:

public static void main(String args[]) 
    String key = args[0]; // key
    int n = (int) Math.sqrt(args.length - 1);
    
        String mat[][] = new String[n][n]; //matrix 

        int count = 1;
        for (int r = 0; r < n; r++) 
            for (int c = 0; c < n; c++)
                if (count == args.length)
                    break;
                mat[r][c] = args[count];
                count++;
            

        
    find_key(mat,n,key);

    

当我跑步时

java findKey 15 60 10 9 20 8 4 12 7 3

我的输出:未找到

java findKey 3 60 10 9 20 8 4 12 7 3

我的输出:位置:(3,3)

但是,程序必须接受多个命令行参数。第一个参数是要寻找的键,连续的参数是方阵的元素,行列,其中每一行用逗号分隔,无穷大用 I 缩写。 两个示例调用及其对应的矩阵是

Invocaiton 1:java findKey 15 60 10 9, 20 8 4, 12 7 3 
Invocaiton 2:java findKey 71 I I 71 20, I I 60 17, 72 41 12 5, 27 5 4 3

对于第一次调用,键 = 15 并且 3×3 矩阵不包含该键,因此应该找不到输出。在第二次调用中,key=71 在 4×4 矩阵中,它确实包含 key,所以输出应该是 (1,3))。

【问题讨论】:

你想忽略逗号还是需要用它来检查输入? 我可能只想忽略逗号@Matt 为什么要在命令中插入逗号?也许像Commons CLI library(来自Apache)这样的东西是合适的? 【参考方案1】:

根据您的评论,您想忽略逗号。在这种情况下,您可以在将值分配给 mat 的元素时将其从参数中删除。

mat[r][c] = args[count].replace(",", "")

一些背景信息:args[] 表示的字符串被空格分割,因此数组的结果元素如下所示:

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 15| 60| 10| 9,| 20|  8| 4,| 12|  7|  3|

因此,逗号是行的最后一个元素的一部分,可以简单地删除。

【讨论】:

以上是关于java中如何处理String args[]中的逗号的主要内容,如果未能解决你的问题,请参考以下文章

20 个案例教你在 Java 8 中如何处理日期和时间?

在Java 8中如何处理日期和时间

在java中如何处理日期格式问题

SpringBoot.09.SpringBoot中如何处理Filter抛出的异常

在 Objective-C 中如何处理 Autorelease 池中的对象?

Sencha Touch V2 中如何处理方向变化