如何在没有String API方法的情况下在Java中获取字符串的长度?

时间:2011-02-10 14:39:18

标签: java string

  

可能重复:
  String length without using length() method in java

我需要使用for循环并且不使用length()之类的任何方法来获取Java中字符串的长度(不存在字符)。

import java.io.*;
import java.util.*;

public class reversestring

{
    public static void main(String arg[])throws IOException

    {
     String s;
     int i=0,j=0,k=0;
     DataInputStream in=new DataInputStream(System.in);
     System.out.println("Enter ur string : ");
     s=in.readLine();
     char ar[]=s.toCharArray();
     System.out.println("Length of the string is : ");

     for(j=ar[i];j!='\0';i++)
     {

         k++;

     }
     System.out.println(+k);
    }
}

我写了这个程序,但我没有得到答案。这有什么问题?

7 个答案:

答案 0 :(得分:5)

以前曾经问过这个问题。这是我最喜欢的答案:

str.lastIndexOf("")

(与其他答案相反,它甚至可能在不变的时间内运行。)

答案 1 :(得分:4)

以下.length不是方法。

int length = s.toCharArray().length

答案 2 :(得分:1)

Java不是C,因此您不能将Java字符串视为C字符串,并且您不能指望C方法在Java中工作。特别是,Java字符串不是以null结尾的。

'正确'的方式是使用length(字符串方法或数组属性),但是,既然你不想要,你可以使用'for each'循环。

for (char c in charArray) {
    ++count;
}
但是,感觉不太好。

答案 3 :(得分:1)

一个有功能的家伙会回答

len(str)
   return str.isEmpty() ? 0 : 1+len(str.substring(1));

答案 4 :(得分:1)

int counter;
String s = "something";

try{
    for(counter=0; s.charAt(counter); counter++);       

}catch(Exception e){
   //ArrayIndexOutOfBoundsException
   System.out.println("Length: " + counter);
}

答案 5 :(得分:0)

我相信Java的String.toCharArray()返回一个非空终止的数组,因此查找空字符是行不通的。

答案 6 :(得分:0)

我无法相信所有其他答案都在使用String API,尽管此问题的标题表明不允许:-P

我想出了这个:

System.out.println(new StringReader("stackoverflow").skip(Long.MAX_VALUE));