如何判断char数组的实际长度?

aacall1 2009-03-31 06:31:25
初始化一个 char数组
char[] test=new char[10];

test[0]=1;
test[1]=2;

System.out.println(test.length);

输出是初始化时定义的长度10;

怎么能知道实际初始化的的元素是2个?
...全文
5312 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZSP95 2012-08-17
  • 打赏
  • 举报
回复
实在是受不了了
strlen() 标准c库函数 不久行了
cpp255 2010-05-03
  • 打赏
  • 举报
回复
不错,学习了
qinqinhao 2009-04-01
  • 打赏
  • 举报
回复
ding
QuXingZhe 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 aacall1 的回复:]
引用 11 楼 LoveJava520 的回复:
package com.csdn;

import java.util.ArrayList;
import java.util.List;

/**
* @author xiaotang E-mail: 254849897@qq.com
* @version1.00 创建时间:Mar 31, 2009 8:44:12 PM 类说明:
*/

public class CharTest {
public static void main(String args[]) {
char a[] = new char[10];
a[0] = 1;
a[1] = 2;
List list = new ArrayList();
for (int i = 0; i …
[/Quote]
  • 打赏
  • 举报
回复
这还真的不太好办,其实test[3]、test[4]……都已经是0了,就是不知道哪个0是自己赋的而不是自动的
EvilCross 2009-03-31
  • 打赏
  • 举报
回复
不是吧,char数组的默认值是'\000',好像是null的意思。。。

判断个数,写个for,当读取到的a[i]是'\000'时,跳出就可以了
aacall1 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 luosl 的回复:]
如果只是判断一个数组的长度,楼上很多方法都可以。
但楼主非要判断char[]数组里面的元素个数,应该自己给char[]赋予一个初始值,确保这个初始值是你不会放到数组中的,如C里面的'\0'。然后再使用for循环去判断了。

其他更好的办法我是没有想到的。
[/Quote]

java中对于char数组中的元素默认的初始值就是0,怎么改变?
sharplock1 2009-03-31
  • 打赏
  • 举报
回复
...学习
luosl 2009-03-31
  • 打赏
  • 举报
回复
如果只是判断一个数组的长度,楼上很多方法都可以。
但楼主非要判断char[]数组里面的元素个数,应该自己给char[]赋予一个初始值,确保这个初始值是你不会放到数组中的,如C里面的'\0'。然后再使用for循环去判断了。

其他更好的办法我是没有想到的。
aacall1 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 LoveJava520 的回复:]
package com.csdn;

import java.util.ArrayList;
import java.util.List;

/**
* @author xiaotang E-mail: 254849897@qq.com
* @version1.00 创建时间:Mar 31, 2009 8:44:12 PM 类说明:
*/

public class CharTest {
public static void main(String args[]) {
char a[] = new char[10];
a[0] = 1;
a[1] = 2;
int j = 0;
List list = new ArrayList();
for (int i = 0; i < a.length; i++) { …
[/Quote]

这种情况下返回是2,但如果是 a[0] = 1; a[1] = 2;a[2]=0; 返回也是2,但实际上是对3个元素赋予了初始值
LoveJava520 2009-03-31
  • 打赏
  • 举报
回复
package com.csdn;

import java.util.ArrayList;
import java.util.List;

/**
* @author xiaotang E-mail: 254849897@qq.com
* @version1.00 创建时间:Mar 31, 2009 8:44:12 PM 类说明:
*/

public class CharTest {
public static void main(String args[]) {
char a[] = new char[10];
a[0] = 1;
a[1] = 2;
int j = 0;
List list = new ArrayList();
for (int i = 0; i < a.length; i++) {
if (a[i] != 0) {
j++;
}
}
System.out.println(j);
}

}
aacall1 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 LoveJava520 的回复:]
package com.csdn;

import java.util.ArrayList;
import java.util.List;

/**
* @author xiaotang E-mail: 254849897@qq.com
* @version1.00 创建时间:Mar 31, 2009 8:44:12 PM 类说明:
*/

public class CharTest {
public static void main(String args[]) {
char a[] = new char[10];
a[0] = 1;
a[1] = 2;
List list = new ArrayList();
for (int i = 0; i < a.length; i++) {
if (a[i] !=…
[/Quote]

如果初始化的值是0怎么办,没法用if (a[i] != 0) 来做判断
aacall1 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lzw2516 的回复:]
引用 7 楼 ZangXT 的回复:
引用 5 楼 flamingsky007 的回复:
引用 1 楼 yanhan0615 的回复:
一个for循环,然后统计里面值不为0的


如果赋值有0呢?

那就没办法了。
你可以自己规定,如果这个元素为空的话,你拿一个什么来表示。



这个办法行!
[/Quote]

现在就是没办法判断是否为空,实际应用中初始化的元素个数是动态的
LoveJava520 2009-03-31
  • 打赏
  • 举报
回复
package com.csdn;

import java.util.ArrayList;
import java.util.List;

/**
* @author xiaotang E-mail: 254849897@qq.com
* @version1.00 创建时间:Mar 31, 2009 8:44:12 PM 类说明:
*/

public class CharTest {
public static void main(String args[]) {
char a[] = new char[10];
a[0] = 1;
a[1] = 2;
List list = new ArrayList();
for (int i = 0; i < a.length; i++) {
if (a[i] != 0) {

list.add(Character.valueOf(a[i]));
}
}
System.out.println(list.size());
}

}
yangqidong 2009-03-31
  • 打赏
  • 举报
回复
楼主有这种需求的话应该使用ArrayList
lzw2516 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ZangXT 的回复:]
引用 5 楼 flamingsky007 的回复:
引用 1 楼 yanhan0615 的回复:
一个for循环,然后统计里面值不为0的


如果赋值有0呢?

那就没办法了。
你可以自己规定,如果这个元素为空的话,你拿一个什么来表示。
[/Quote]


这个办法行!
jiechao_zhang 2009-03-31
  • 打赏
  • 举报
回复
Charactor 有一个静态方法getNumericValue('c'),
如果是一个可以用数值表示的字符,返回大于0的数字,否则小于0.
我觉得可以用.个人觉得.
ZangXT 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 flamingsky007 的回复:]
引用 1 楼 yanhan0615 的回复:
一个for循环,然后统计里面值不为0的


如果赋值有0呢?
[/Quote]
那就没办法了。
你可以自己规定,如果这个元素为空的话,你拿一个什么来表示。
NuisT_NeO 2009-03-31
  • 打赏
  • 举报
回复
基本数据类型 都会默认初始化的
所以即使你只初始化了2个,系统也会初始化剩下的
要想准确定位数组长度 那就用个list.add(),然后在根据list.size()去初始化你的数组
(虽然这个方法有点2,- -!)
泯梦幽思 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yanhan0615 的回复:]
一个for循环,然后统计里面值不为0的
[/Quote]

如果赋值有0呢?
加载更多回复(4)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧