#java #java.util.scanner #indexof
#java #java.util.scanner #indexof
Вопрос:
Я пытаюсь выяснить, как я могу найти индекс последнего символа в первом слове в строковой переменной, используя класс Scanner для получения строки. В моем коде мне нужно использовать одну строку для полного имени и найти индекс последнего символа в имени.
До сих пор я делал это:
String fullName;
Scanner s = new Scanner(System.in);
System.out.println("Insert full name: "); //For example: Joseph Adams.
fullName = s.nextLine();
int position = fullName.indexOf(" ");
System.out.println(fullName.substring(0, position));
//I need to find the index of h in Joseph.
Комментарии:
1. Разве это не просто
position - 1
?2.
String str = fullName.split(" ")
тогда просто сделай этоint index = str[0]. length-1
Ответ №1:
Найдите индекс последнего символа первого слова
Попробуйте это.
- первый метод вычитает единицу из индекса первого пробела, который будет буквой
h
. - второй метод разбивает строку на две части. Часть [0] есть
joseph
. Такимh
образом, длина этой строки меньше 1.
String str = "Joseph Adams";
int index = str.indexOf(" ");
if(index < 0) {
index = str.length();
}
System.out.println(index-1);
// or
String[] parts = str.split("\s ");
int len = parts[0].length();
System.out.println(len-1);
С принтами
5
5
Комментарии:
1. мне нужно найти индекс «h» во входной строке. но ваш ответ был самым близким до сих пор!
2. @gibby Индекс ‘H’???? или индекс последнего символа перед пробелом???? в приведенном выше коде «int index» — это индекс пробела. (индекс -1) — это индекс символа перед пробелом.
3. К сожалению, сообщение о том, что оно близко, не говорит мне, что с ним не так. Пожалуйста, уточните.
Ответ №2:
Индекс последнего символа в строке просто str.length() - 1
. Например, чтобы найти индекс h
в "Joseph"
:
public static int indexOfLast(String str){
return str.length() - 1;
}
Длина "Joseph"
есть 6
, но в индексе нет символа 6
(строки, как и массивы, начинаются с первого элемента в индексе 0
). Итак, мы вычитаем 1
, чтобы получить 5
, который является последним символом в строке. Так что делать:
String name = "Joseph";
name.charAt(indexOfLast(name));
вернется h
.
Комментарии:
1. Это бессмысленная функция, так как
str.length() - 1
это уже индекс символа. Что еще хуже, если символ встречается в строке несколько раз, избыточностьstr.indexOf(str.charAt(…))
будет вычисляться с неправильным индексом.2. @Holger Я изначально думал, что вопрос задает первый индекс последнего символа и что любые экземпляры символа перед последним будут учитываться.