¿Cómo se imprime el carácter número N de la enésima palabra en una línea?

Molly McDonough:

Estoy trabajando en un problema de tarea, que las solicitudes que imprimen el carácter enésimo la enésima palabra en la misma línea sin espacios. Si la enésima palabra es demasiado corto y no tiene carácter número N, el programa deberá imprimir el último carácter de la palabra. Si el usuario introduce una palabra vacía (prensas simples), que las palabras se tendrán en cuenta.

(No hemos aprendido métodos todavía, así que no se supone que los utilizan)

Ver el código de abajo, no estoy seguro de cómo obtener el código para imprimir el último carácter de la palabra si no tiene el carácter enésimo.

import java.util.Scanner;

public class Words {

    public static void main(String[] args) {
        final int N=5;
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a line of words seperated by spaces ");
        String userInput = input.nextLine();
        String[] words = userInput.split(" ");
        String nthWord = words[N];

        for(int i = 0; i < nthWord.length();i++) {
            if(nthWord.length()>=N) {
                char nthChar = nthWord.charAt(N);
                System.out.print("The " + N + "th word in the line entered is " + nthWord + "The " + N + "th charecter in the word is " + nthChar);
            }
            if(nthWord.length()<N) {
                    char nthChar2 = nthWord.charAt(nthWord.length()-1);
                    System.out.print("The " + N + "th word in the line entered is " + nthWord + "The " + N + "th charecter in the word is " + nthChar2);
        }
        input.close();
    }

}
}

Cuando ejecuto esto me da un error:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
    at java.base/java.lang.String.charAt(String.java:702)
    at Words.main(Words.java:24)

Espero ver la enésima palabra y el personaje enésimo en la misma línea

Kaushik yogesh:

La entrada del usuario también puede contener menos de N palabras, ¿verdad? En primer cheque debe ser eso.

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter a line of words seperated by spaces ");
    String userInput = input.nextLine();
    String[] words = userInput.split(" ");
    int n = words.length();
    System.out.print("Enter lookup word - N");
    int askedFor = input.nextInt();
    if (askedFor > n) {
        //your logic for this condition
        return;
    }
    String nthWord = words[askedFor-1];
    if (nthWord.length() < askedFor) print(nthWord.charAt(nthWord.length()-1));
    else print(nthWord.charAt(askedFor-1));
    input.close();
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=332858&siteId=1
Recomendado
Clasificación