通常遍历字符串,先通过length()方法得出长度,再通过charAt(index)访问对应下标的字符。不允许调用length()方法,求字符串长度,有啥方法呢。
思路:
-
lastIndex("")方法
根据Javadoc,返回字符串中最后一个子串出现的起始位置。而最后一个空字符出现的位置就是字符串本身的长度,等同于this.length().public int lastIndexOf(String str)
-
toCharArray()遍历字符串
实现:
lastIndexOf("")
public static int findLengthOfStringWithoutUsingLengthMethod1(String str){
return str.lastIndexOf("");
}
toCharArray()
public static int findLengthOfStringWithoutUsingLengthMethod2(String str){
int len = 0;
for(char c : str.toCharArray()){
len ++;
}
return len;
}
完整代码:
import java.util.*;
public class Test {
public static void main(String[] args) {
TestFindLengthOfStringWithoutUsingLengthMethod();
}
public static void TestFindLengthOfStringWithoutUsingLengthMethod(){
System.out.println("Please enter a string, input quit to exit:");
Scanner in = new Scanner(System.in);
String str = in.nextLine();
while (!str.equals("quit")){
System.out.println("The length of the string is " + findLengthOfStringWithoutUsingLengthMethod1(str));
// System.out.println("The length of the string is " + findLengthOfStringWithoutUsingLengthMethod2(str));
System.out.println("Please enter a string again, input quit to exit:");
str = in.nextLine();
}
}
public static int findLengthOfStringWithoutUsingLengthMethod1(String str){
return str.lastIndexOf("");
}
public static int findLengthOfStringWithoutUsingLengthMethod2(String str){
int len = 0;
for(char c : str.toCharArray()){
len ++;
}
return len;
}
}
结果:
Please enter a string, input quit to exit:
happy weekend!
The length of the string is 14
Please enter a string again, input quit to exit:
I love software testing
The length of the string is 23
Please enter a string again, input quit to exit:
quit
Process finished with exit code 0