子字符串不等于第一个字符的字符串

Substring not equal to the string of the first character

我正在努力找出我的代码有什么问题。当用户输入“apple”时,我发现它不是以元音开头的。

import java.util.*;
public class StringeExerciseElearn {
    public static void main(String[] args) {
        Scanner k = new Scanner(System.in);
        System.out.println("Type a word: ");
        String input = k.next();
        String l = input.substring(0);
        String a = "a";
        String e = "e";
        String i = "i";
        String o = "o";
        String u = "u";

        if(l.equals(a) || l.equals(e) || l.equals(i) || l.equals(o) || l.equals(u))
            System.out.println(input + " begins with a vowel!");
        else
            System.out.println(input + " doesn't begin with a vowel");
        }
    }
}

你使用substring方法有误,你应该在第一个参数中说出开始位置,在第二个参数中说出结束位置:

String l = input.substring(0, 1);

现在一切正常:) :

Type a word: 
apple
apple begins with a vowel!

使用 String 的 startWith 方法,就可以了。

public class Practice {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner k = new Scanner(System.in);
    System.out.println("Type a word: ");
    String input = k.next();
    String l = input;
    String a = "a";
    String e = "e";
    String i = "i";
    String o = "o";
    String u = "u";

    if (l.startsWith(a) || l.startsWith(e) || l.startsWith(i) || l.startsWith(o) || l.startsWith(u))
        System.out.println(input + " begins with a vowel!");
    else
        System.out.println(input + " doesn't begin with a vowel");
}

input.substring(0) returns 从索引 0 开始并扩展字符串长度的字符串。换句话说,它 returns 输入字符串;例如"apple".substring(0) returns“苹果”。

要获取单个字符子字符串,您需要使用同时采用开始索引和结束索引的子字符串方法的版本 — public String substring​(int beginIndex, int endIndex):

String l = input.substring(0, 1);

请注意,这将为空字符串 ("") 抛出 IndexOutOfBoundsException。为防止这种情况,在执行 substring 检查之前还应检查字符串的长度。