2011-02-10 68 views
0

可能重複:
String length without using length() method in java如何在沒有字符串API方法的情況下在Java中獲取字符串的長度?

我需要得到一個字符串的長度(不存在的字符),使用for循環在Java和沒有使用像length()任何方法。

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); 
    } 
} 

我寫了這個程序,但我沒有得到答案。它有什麼問題?

+1

Java``String`對象是**不** 0終止! – 2011-02-10 14:42:25

+1

由於你「不能」使用`length()`..這個應該被標記爲「家庭作業」嗎? – Nanne 2011-02-10 14:44:34

+1

@Nanne:根據[this](http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions)作業標籤(連同其他元標籤)不鼓勵。 – 2011-02-10 14:47:07

回答

1

Java不是C,因此您不能將Java字符串視爲C字符串,並且您不能指望C方法在Java中工作。特別是,Java字符串不是空終止的。

'正確的'方法是使用length(字符串方法或數組屬性),但是,由於您不需要,您可以使用'for each'循環。

for (char c in charArray) { 
    ++count; 
} 

雖然這感覺不好。

4

以下.length不是一種方法。

int length = s.toCharArray().length 
0

我認爲Java的String.toCharArray()返回一個數組,它是不是空終止,所以尋找一個空字符是行不通的。

5

這已被問過。這裏是我最喜歡的答案:

str.lastIndexOf("") 

(這甚至可能運行在固定的時間,而不是其他的答案)

1

功能的人會回答

len(str) 
    return str.isEmpty() ? 0 : 1+len(str.substring(1)); 
1
int counter; 
String s = "something"; 

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

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

我可以相信所有其他答案都使用了字符串API,儘管此問題的標題表明不允許使用:-P

我想出了這個:

System.out.println(new StringReader("stackoverflow").skip(Long.MAX_VALUE)); 
相關問題