Проблема, связанная с подстрокой JAVA

Давайте посмотрим, у меня есть проблема с упражнением Струны, которое я делаю. Я должен показать на экране тип даты дд / мм / гггг, и я должен возвращать дни, месяцы и годы отдельно. Это не проблема, потому что я понимаю, как подстрока и тому подобное. Проблема в том, что я ставлю пробел в ответе, и он выдает мне эту ошибку:

Исключение в потоке "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)); 
 }
}
0
задан 30.11.2019, 17:18
2 ответа

Если цепь состоит 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)); 
}
0
ответ дан 01.12.2019, 10:33
  • 1
    спасибо! ты помог мне очень много было чем-то действительно очень простым, но спасибо! – Sebastián Moreno 01.12.2019, 00:23
  • 2
    @Sebastiá nMoreno, Если этот ответ ты ayudó ты должен помечать ее как принятая, с sí mbolo check (вњ “), что está в левый бок ответа :) – Riaven 01.12.2019, 04:13

Проблема может решать это меняя ú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]); 
0
ответ дан 01.12.2019, 10:33