Давайте посмотрим, у меня есть проблема с упражнением Струны, которое я делаю. Я должен показать на экране тип даты дд / мм / гггг, и я должен возвращать дни, месяцы и годы отдельно. Это не проблема, потому что я понимаю, как подстрока и тому подобное. Проблема в том, что я ставлю пробел в ответе, и он выдает мне эту ошибку:
Исключение в потоке "main" java.lang.StringIndexOutOfBoundsException: начало 0, конец 2, длина 1 в java.base / java.lang.String.checkBoundsBeginEnd (String.java:3720) в java.base / java.lang.String.substring (String.java:1909) в ex5.main (ex5.java:17)
import cs1.*;
public class ex5
{
public static void main(String[] args)
{
String data = "18/08/2011";
//asking for the data
System.out.printf("DATA: ");
data = Keyboard.readString();
//system.out
System.out.printf("DIA: %s %n", data.substring(0, 2));
System.out.printf("MES: %s %n", data.substring(3, 5));
System.out.printf("ANY: %s", data.substring(6, 10));
}
}
Если цепь состоит mГЎs короткая tamaГ±o в том, что ты пробуешь обрезать, mГ©todo substring брось одну excepciГіn, чтобы это предотвращать, ты можешь подтверждать tamaГ±o цепи раньше, например asГ-:
if(data.length()<10){
System.out.print("Tamaño de cadena menor a 10");
}else{
System.out.printf("DIA: %s %n", data.substring(0, 2));
System.out.printf("MES: %s %n", data.substring(3, 5));
System.out.printf("ANY: %s", data.substring(6, 10));
}
Проблема может решать это меняя última линия impresi¦n
System.out.printf("ANY: %s", data.substring(6));
Из estÃ: сформируй не require показывать длину substring
.
, Если не является обязательный subString, могут использовать método split
, если дата всегда наступает в том же формате dd/mm/aaaa
, напой возможно делать
String[] fechaSeparada = data.split("/");
System.out.printf("DIA: %s %n", fehaSeparada[0]);
System.out.printf("MES: %s %n", fehaSeparada[1]);
System.out.printf("ANY: %s", fehaSeparada[2]);