Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串索引超出范围-为什么会发生这种情况?_Java - Fatal编程技术网

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

请记住,我只自学了不到一个月的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 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;
}