想要打印以字母“a”结尾的名称,Java

Want to print the names which ends up with the letter "a" , Java

提问人:FlyingRacoon51 提问时间:6/20/2022 最后编辑:Federico klez CullocaFlyingRacoon51 更新时间:6/21/2022 访问量:268

问:

基本上,我想打印以字母“a”结尾的名称,并计算这些名称的百分比。我正在尝试一些“charAt”的东西,但我无法跳过它。

String[] array = new String[10];

Scanner sc = new Scanner(System.in);

System.out.println("ENTER THE NAMES");
String name = sc.nextLine();

for (int i = 0; i < array.length; i++) {
    array[i] = sc.nextLine();
    if (name.length() < array[i].length()) {
        name = array[i];
    }
}
System.out.println("LONGEST NAME: " + name);

for (int i = 0; i < array.length; i++) {
    if (name.length() > array[i].length()) {
        name = array[i];
    }
}
System.out.println("SHORTEST NAME: " + name);

for (int i = 0; i < array.length; i++) {
    if (name.endsWith("a")) {
        System.out.println(name);
    }
}
Java 数组 for 循环 java.util.scanner

评论


答:

1赞 Rodolffo 6/20/2022 #1

您不会将 name 的值更新为 ,因此您基本上会循环使用相同的值十次。这应该可以解决它:array[i]

for (int i = 0; i < array.length; i++) {
    name = array[i];
    if (name.endsWith("a")) {
        System.out.println(name);
    }
}

另一种可能性是使用 array[i] 而不是 name(但当您多次使用它时,最好使用第一种解决方案):

for (int i = 0; i < array.length; i++) {
    if (array[i].endsWith("a")) {
        System.out.println(array[i]);
    }
}
1赞 xthe_white_lionx 6/20/2022 #2
  1. 你真的需要循环三次提供相同的数组吗?

  2. 尝试更频繁地使用变量。提醒每个都是对数组的访问,与array[i]array[i].length()

  3. name.endsWith("a")如果您正在查看循环数组中的名称,则不正确,它应该是这样array[i].endsWith("a")

    String[] array = new String[10];
    
    Scanner sc = new Scanner(System.in);
    
    System.out.println("ENTER THE NAMES");
    String name = sc.nextLine();
    
    String shortest = name;
    String longest = name;
    
    for (int i = 0; i < array.length; i++) {
        array[i] = sc.nextLine();
        String currentName = array[i];
        int length = currentName.length();
    
        if (longest.length() < length) {
            longest = currentName;
        }
        if (shortest.length() > length) {
            shortest = currentName;
        }
        if (currentName.endsWith("a")) {
            System.out.println(currentName);
        }
    }
    System.out.println();
    System.out.println("LONGEST NAME: " + longest);
    System.out.println("SHORTEST NAME: " + shortest);