JAVA字符串如何实现length方法

时间:2014-08-05 15:42:29

标签: java string overwrite string-length

我的室友的老师给了他们一个在JAVA中实现字符串长度方法的任务? 我们想出了两种方法。

  1. 检查元素,当得到越界异常时,表示字符串结束,我们捕获此异常,然后我们就可以得到长度。

  2. 每次传递一个字符串来计算长度时,我们会在其末尾添加特殊字符,它可以是'\ 0'或“A”等等。

  3. 但是我们都认为这两种方式可以完成任务,但是它们很糟糕(或者是异常的坏习惯),它并不酷。

    我们用谷歌搜索了它,但没有得到我们想要的东西。

5 个答案:

答案 0 :(得分:1)

您可能想要的伪代码是:

counter = 0
for(Character c in string) {
    counter = counter + 1
}

这要求您找到将Java String转换为字符数组的方法。

答案 1 :(得分:1)

这样的东西?

int i = 0;
for (char ch : string.toCharArray()) {
  i++;
}

答案 2 :(得分:1)

老师正在努力让他或她的学生思考,并且会对解决问题的创造性解决方案感到满意。

这些解决方案都不会在现实世界中使用,因为我们有String.length()方法。但是,您正在学习的创造性,解决问题的过程将用于实际开发。

  

“1。检查元素,当得到越界异常时,它意味着字符串结束,我们捕获这个异常,然后我们就可以获得长度。”

在这种情况下,您会在正常情况下引发异常。常见的样式指南是仅在特殊情况下抛出异常。与正常的控制流相比,抛出异常可能更昂贵并且更难以被人类追随。

那就是说,你的这个想法对很长的琴弦都有潜在的优势。到目前为止,所有发布的答案都以线性时间和空间运行。它们执行的时间和/或额外空间与字符串的长度成比例。 使用这种方法,您可以实现对字符串长度的O(log n)搜索。

线性与否,教师可能会发现这种方法的创造性是可以接受的。如果老师已经传达了异常只针对例外情况的想法,请避免使用。

  

“2。每次传递一个字符串来计算长度时,我们会在其末尾添加特殊字符,它可以是'\ 0'或”A“等。”

这个想法有一个缺陷。如果字符串包含您的特殊字符会发生什么?

修改

一个简单的实现方法是使用String.toCharArray()获取底层char数组的副本,然后简单地获取它的长度。与您的想法不同,这不是一种就地方法 - 使副本在内存中需要额外的空间。

    String s = "foo";
    int length = s.toCharArray().length;

答案 3 :(得分:0)

试试这个

public static int Length(String str) {
    str = str + '\0';
    int count = 0;

    for (int i = 0; str.charAt(i) != '\0'; i++) {
        count++;
    }

    return count;
}

答案 4 :(得分:-1)

怎么样:

"your string".toCharArray().length