J'essaie de retourner les 3 caractères du Moyen 3 d'un mot à l'aide de la méthode de sous-chaîne, mais comment puis-je retourner les 3 lettres de Moyen 3 d'un mot si le mot peut être n'importe quelle taille (impair uniquement)?
Mon code comme ceci. p> La raison pour laquelle j'ai un 2 et 5 de la méthode de sous-chaîne est parce que je l'ai essayé avec le mot "perplexe" et il a renvoyé les trois lettres moyennes comme C'était censé faire. Mais si j'essaie, par exemple "xxxtoyxxx", il imprime "Xto" au lieu de "jouet". P> P.s. S'il vous plaît ne me frappe pas, je suis nouveau pour coder :) p> p>
3 Réponses :
Considérez le code suivant:
class Sample { public static void main(String[] args) { String text = "car"; System.out.println(getMiddleString(text, 3)); } private static String getMiddleString(String str, int length) { // Just return the entire string if the length is greater than or equal to the size of the String if (str.length() <= length) { return str; } // Determine the starting point of the text. We need first find the midpoint of the String and then go back // x spaces (which is half of the length we want to get. final int startingPoint = (str.length() / 2) - (length / 2); return "[" + str.substring(startingPoint, startingPoint + length) + "]"; } }
Je pense que ce que vous pouvez faire est de calculer la longueur de la chaîne puis divisée par 2. Cela vous donne la chaîne au milieu, puis vous pouvez soustraire un au démarrage et ajouter 2 à la fin. Si vous souhaitez obtenir les deux premiers pour une chaîne étrange, puis soustrayez 2 à l'index de démarrage et ajoutez 1 à la fin.
String word_length = inputWord.length()/2; System.out.println("Enter word: " + inputWord + " Midfix: " + inputWord.substring((word_length-1, word_length+2));
Ceci obtiendra le milieu de la chaîne et renvoie les caractères au milieu, et + - 1 de l'indice intermédiaire.
public static String getMiddleThree(String str) { int position, length; if (str.length() % 2 == 0) { position = str.length() / 2 - 1; length = 2; } else { position = str.length() / 2; length = 1; } int start = position >= 1 ? position - 1 : position; return str.substring(start, position + 1); }
Lorsque j'ai couru votre code, "exemple" renvoyé "ampli" comme prévu. Veuillez clarifier votre question.
Mon mauvais, ça marche. Je voulais dire si je tape "xxxtoyxxx", j'ai une erreur. J'essaie simplement de taper n'importe quel mot de longueur étrange et d'obtenir les 3 lettres moyennes. Donc, même si je tape "voiture", il retournera "voiture".