我需要使用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);
}
}
我写了这个程序,但我没有得到答案。这有什么问题?
答案 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));