Java 在if条件下声明数组的变通方法

Java 在if条件下声明数组的变通方法,java,arrays,if-statement,split,declaration,Java,Arrays,If Statement,Split,Declaration,这部分代码有一个问题,我希望能够声明一个数组,数组的大小应该是字符串中相应的拆分数。 或者我需要计算字符串中逗号的数量并相应地分配大小,还是有更好的解决方案 String MapPath2[]; if(type.equals("comparative")) MapPath2[]=args[1].split(","); 最近我还没有机会用java编写代码。如果这是一个愚蠢的问题,请饶了我,把我当作傻瓜。感谢您的帮助。您不需要声明尺寸,如果您删除额外的[],您拥有的

这部分代码有一个问题,我希望能够声明一个数组,数组的大小应该是字符串中相应的拆分数。 或者我需要计算字符串中逗号的数量并相应地分配大小,还是有更好的解决方案

    String MapPath2[];
    if(type.equals("comparative"))
        MapPath2[]=args[1].split(",");

最近我还没有机会用java编写代码。如果这是一个愚蠢的问题,请饶了我,把我当作傻瓜。感谢您的帮助。

您不需要声明尺寸,如果您删除额外的
[]
,您拥有的就可以了:

String MapPath2[];
if(type.equals("comparative"))
    MapPath2=args[1].split(",");
数组
split
返回给您的大小合适。如果需要知道结果大小,请使用
MapPath2.length
(分配后)

您可能还想在
else
中执行一些操作,以使
MapPath2
具有一个确定的值:

String MapPath2[];
if(type.equals("comparative"))
    MapPath2=args[1].split(",");
else
    MapPath2=null;
或者更简洁地说:

String MapPath2[];
MapPath2 = type.equals("comparative") ? args[1].split(",") : null;
String[] mapPath2;
mapPath2 = type.equals("comparative") ? args[1].split(",") : null;
(与其使用
null
s,不如使用空数组作为后续逻辑的首选,因为它有时很方便,可以将
null
替换为上方和下方的
新字符串[0]
。其他时候,使用
null
作为“无数据”标志更方便。)


旁注:Java世界中有一些非常常见的代码样式约定,建议您在代码中使用:

  • 变量名应以小写字母开头,以免与类名混淆

  • []
    应该与类型名而不是变量名一起使用

  • 始终使用
    {}
    ,即使
    if
    else
    的主体只有一行

  • 在运算符和关键字周围留出空格,以便于阅读

  • 应用这些:

    String[] mapPath2;
    if (type.equals("comparative")) {
        mapPath2 = args[1].split(",");
    }
    else {
        mapPath2 = null;
    }
    
    许多人还将
    else
    }
    放在同一行,因此:

    String[] mapPath2;
    if (type.equals("comparative")) {
        mapPath2 = args[1].split(",");
    } else {
        mapPath2 = null;
    }
    
    或者更简洁地说:

    String MapPath2[];
    MapPath2 = type.equals("comparative") ? args[1].split(",") : null;
    
    String[] mapPath2;
    mapPath2 = type.equals("comparative") ? args[1].split(",") : null;
    

    您不需要声明大小,如果您删除额外的
    []
    ,您拥有的就可以了:

    String MapPath2[];
    if(type.equals("comparative"))
        MapPath2=args[1].split(",");
    
    数组
    split
    返回给您的大小合适。如果需要知道结果大小,请使用
    MapPath2.length
    (分配后)

    您可能还想在
    else
    中执行一些操作,以使
    MapPath2
    具有一个确定的值:

    String MapPath2[];
    if(type.equals("comparative"))
        MapPath2=args[1].split(",");
    else
        MapPath2=null;
    
    或者更简洁地说:

    String MapPath2[];
    MapPath2 = type.equals("comparative") ? args[1].split(",") : null;
    
    String[] mapPath2;
    mapPath2 = type.equals("comparative") ? args[1].split(",") : null;
    
    (与其使用
    null
    s,不如使用空数组作为后续逻辑的首选,因为它有时很方便,可以将
    null
    替换为上方和下方的
    新字符串[0]
    。其他时候,使用
    null
    作为“无数据”标志更方便。)


    旁注:Java世界中有一些非常常见的代码样式约定,建议您在代码中使用:

  • 变量名应以小写字母开头,以免与类名混淆

  • []
    应该与类型名而不是变量名一起使用

  • 始终使用
    {}
    ,即使
    if
    else
    的主体只有一行

  • 在运算符和关键字周围留出空格,以便于阅读

  • 应用这些:

    String[] mapPath2;
    if (type.equals("comparative")) {
        mapPath2 = args[1].split(",");
    }
    else {
        mapPath2 = null;
    }
    
    许多人还将
    else
    }
    放在同一行,因此:

    String[] mapPath2;
    if (type.equals("comparative")) {
        mapPath2 = args[1].split(",");
    } else {
        mapPath2 = null;
    }
    
    或者更简洁地说:

    String MapPath2[];
    MapPath2 = type.equals("comparative") ? args[1].split(",") : null;
    
    String[] mapPath2;
    mapPath2 = type.equals("comparative") ? args[1].split(",") : null;
    

    如果不知道数组的大小,可以使用
    List
    代替
    Array

    然后你可以用

        List<String> list = new ArrayList<>();
        if(type.equals("comparative")){
           Collections.addAll(list, args[1].split(","));
        }
    
    List List=new ArrayList();
    if(类型等于(“比较”)){
    Collections.addAll(列表,参数[1]。拆分(“,”);
    }
    
    如果不知道数组的大小,可以使用
    列表
    而不是
    数组

    然后你可以用

        List<String> list = new ArrayList<>();
        if(type.equals("comparative")){
           Collections.addAll(list, args[1].split(","));
        }
    
    List List=new ArrayList();
    if(类型等于(“比较”)){
    Collections.addAll(列表,参数[1]。拆分(“,”);
    }
    
    这不是有效的Java。除了删除作业中的
    []
    之外,这应该可以
    String.split
    将返回数组-您不需要预先分配它。不要这样命名变量。叫它
    mapPath2
    。我知道。因此,如果可能的话,我需要一个解决方法,这比计算逗号的数量要好。谢谢TichodromaDo你的意思是像这样的Jon skeet字符串映射路径2;如果(type.equals(“comparative”))mappath2=args[1]。拆分(“,”);这不是有效的Java。除了删除赋值中的
    []
    之外,这应该可以
    String.split
    将返回数组-您不需要预先分配它。不要这样命名变量。叫它
    mapPath2
    。我知道。因此,如果可能的话,我需要一个解决方法,这比计算逗号的数量要好。谢谢TichodromaDo你的意思是像这样的Jon skeet字符串映射路径2;如果(type.equals(“comparative”))mappath2=args[1]。拆分(“,”);理想情况下,使用更为传统的名称和方括号位置:)@JonSkeet:确实如此。:-)我在最后加了一条关于这一点的说明。谢谢@T.J.Crowder。我再过9分钟就无法接受你的回答了。最好使用更传统的名字和方括号:)@JonSkeet:确实如此。:-)我在最后加了一条关于这一点的说明。谢谢@T.J.Crowder。我再过9分钟就无法接受你的回答。“如果你不知道数组的大小,你可以使用
    List
    而不是
    Array
    。”你可以,但是你可以使用数组,即使你不知道数组的大小,因为
    split
    会帮你处理。在上面的例子中,您仍然在创建一个数组(事实上,您正在创建两个,其中一个是临时的——并且很可能创建三个甚至更多,因为在
    addAll
    过程中,第一个可能需要至少一次重新分配,并且可能不止一次)。“您可以使用
    List
    而不是