我对这部分代码有一个问题,我希望能够声明一个数组,其大小应该是字符串中相应的分割数。 或者我是否需要计算字符串中的逗号数并相应地分配大小,或者是否有更好的解决方案。
String MapPath2[];
if(type.equals("comparative"))
MapPath2[]=args[1].split(",");
我最近没有机会在java中编写代码。如果这是一个愚蠢的问题请指责我并指导我作为菜鸟。感谢您的帮助。
答案 0 :(得分:4)
您无需声明尺寸,如果删除额外的[]
,您所拥有的就是没有问题:
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;
(而不是那里的null
,如果有一个空数组是后续逻辑的首选,有时候很方便,请将null
替换为new String[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;
答案 1 :(得分:1)
如果您不知道需要的尺寸,可以使用List
代替Array
。
然后你可以使用
List<String> list = new ArrayList<>();
if(type.equals("comparative")){
Collections.addAll(list, args[1].split(","));
}