在Java的char阵列上设置尺寸
-
08-10-2019 - |
题
我正在开发一个Android应用程序。
我想将大小设置为这样的炭阵列:
public char[5] language;
但这行不通。我必须删除第五个才能使其正常工作。
我想将五个字符限制为语言变量。我怎样才能做到这一点?
谢谢。
解决方案
你不能那样做。 在Java中,数组的类型不包括其大小。看到我的答案 这个较早的问题. 。 (忽略有关的部分 abstract
这个问题中的方法...这不是真正的问题。)
数组的大小取决于创建它的表达式。例如,以下创建一个包含5个字符的字符阵列,然后将其替换为另一个包含21个字符的数组。
public char[] language = new char[5];
...
language = new char[21];
请注意,创建是由平等RHS上的表达式完成的。数组的长度是其“值”的一部分,而不是其“类型”。
其他提示
引用JLS:
阵列的长度不是其类型的一部分。
要初始化一个数组,您应该做:
public char[] language = new char[5];
其他解决方案是
public char[] language = {0, 0, 0, 0, 0};
或者
public char[] language;
language = new char[5];
在Java中,数组声明不能包含数组的大小;我们只知道变量将包含特定类型的数组。要具有初始化的数组(并且有一个大小),您必须通过使用 new
或使用快捷方式,该快捷键允许同时初始化和设置数组的值。
必须检查数组是否具有指定尺寸的最佳方法,实际上是用类似的东西检查数组的大小 if(array.length == 5)
.
资源 :
关于同一主题:
变量本身只是类型的char-array(char[]
),因此您不能限制变量的大小 类型. 。您可以限制的是您实例化的数组的大小并保存到该变量:
char[] language = new char[4];
public char[] language = new char[5];
您不能将变量本身限制为长度5;您需要在逻辑中强制执行这种不变。这意味着它也不应该公开:
private char[] language = new char[5];
...
public void setLanguage(final char[] language)
{
// or maybe language.length != 5, or whatever you really mean
if (language.length > 5)
throw new IllegalArgumentException("language must have length <= 5");
this.language = language;
}
也许您想通过使用ArrayList作为数组的表示来尝试通用样式。因此,您可能会使用arraylist方法找到灵活性。
private ArrayList<Character> alchar = new ArrayList<Character>(5);
............................................
public void addChar(Character ch){
if (alchar.size() <= 5)
alchar.add(ch);
}
public ArrayList<Character> getChars(){
return alchar;
}
不隶属于 StackOverflow