Java 字符串索引超出范围-为什么会发生这种情况?
请记住,我只自学了不到一个月的java 我正在尝试制作一个程序,它只告诉你你给这个程序的名字的最后一个字符。这是我的密码:Java 字符串索引超出范围-为什么会发生这种情况?,java,Java,请记住,我只自学了不到一个月的java 我正在尝试制作一个程序,它只告诉你你给这个程序的名字的最后一个字符。这是我的密码: import java.util.Scanner; public class LastCharacter { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.println("hey"); String n
import java.util.Scanner;
public class LastCharacter {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("hey");
String name = reader.nextLine();
lastChar(name);
}
public static char lastChar(String text) {
char lastChar = '\0';;
int i = 0;
for (i = 0; i <= text.length(); i++) {
lastChar = text.charAt(i);
}
System.out.println(lastChar);
return lastChar;
}
Java结果:1
我也知道这可以通过将字符串的长度减去1来实现,但是我想知道为什么这个方法不起作用。我真的不知道怎么用这个词,但是字符串和字符不合拍吗?请不要取笑我
谢谢 Java字符串从基索引0开始。因此,这条线:对于i=0;iJava字符串从基索引0开始。因此,这条线:对于i=0;我你出界了!条件应为:
我你出界了!条件应为:
问题在于Java对字符串使用0索引数组。这意味着for循环i问题是因为Java使用0索引数组作为字符串。这意味着for循环i字符串是基于0的,这意味着第一个索引是0。所以对于字符串mom,第0个索引是m,第1个索引是o,第2个索引是m。这意味着这个字符串没有第三个索引,即使它的长度是3!基于此,您的循环应该是:
for (i = 0; i < text.length(); i++) {
lastChar = text.charAt(i);
}
字符串是基于0的,这意味着第一个索引是0。所以对于字符串mom,第0个索引是m,第1个索引是o,第2个索引是m。这意味着这个字符串没有第三个索引,即使它的长度是3!基于此,您的循环应该是:
for (i = 0; i < text.length(); i++) {
lastChar = text.charAt(i);
}
这里需要注意两件事: 一,。Java String类中的length方法返回字符串的字符数 二,。Java数组使用零基索引 因此,要完成获取名称字符串的最后一个字符的任务,请执行以下操作:
public static char lastChar(String text) {
int textLength = text.length();
char lastChar = text.charAt(textLength - 1); //first char starts from index 0
return lastChar;
}
希望有帮助。这里需要注意两件事: 一,。Java String类中的length方法返回字符串的字符数 二,。Java数组使用零基索引 因此,要完成获取名称字符串的最后一个字符的任务,请执行以下操作:
public static char lastChar(String text) {
int textLength = text.length();
char lastChar = text.charAt(textLength - 1); //first char starts from index 0
return lastChar;
}
希望能有所帮助。通过解释字符串是如何基于0的以及为什么会导致它们没有索引字符串[strlength],这个答案会得到改进。通过解释字符串是如何基于0的以及为什么会导致它们没有索引字符串[strlength],这个答案会得到改进。
public static char lastChar(String text) {
int textLength = text.length();
char lastChar = text.charAt(textLength - 1); //first char starts from index 0
return lastChar;
}