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
而不是