Поиск индекса последнего символа во входной строке JAVA?

#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 Я изначально думал, что вопрос задает первый индекс последнего символа и что любые экземпляры символа перед последним будут учитываться.