Erro na main

Pessoal criei as seguintes classes só que não estou conseguindo fazer funcionar a main segue as classes que fiz e também a main, preciso resolver a seguinte questão ?

Na main, você deverá criar uma “playlist” (um array de Streamings), que deverão ser
devidamente inicializados. Logo após, você deverá fazer um loop que toca toda a playlist e imprime
o tempo total de duração ao final.

package revisaoprova;

public class Streaming {
String fonte;
int duracao;

public void tocar(Streaming stream){
System.out.println("simulando streaming");
System.out.println("duração: "+stream.duracao);
System.out.println("fonte: "+stream.fonte);
}

}

package revisaoprova;

public class Video extends Streaming {
String autor, nome;

@Override
public void tocar(Streaming stream){
System.out.println(“simulando video”);
System.out.println("fonte: "+ stream.fonte);
System.out.println("duração: "+stream.duracao);
System.out.println("autor: "+ this.autor);
System.out.println("nome: " + this.nome);
}

public Video(String autor, String nome, String fonte, int duracao) {
this.autor = autor;
this.nome = nome;

}
}

package revisaoprova;

public final class Live extends Streaming {

private String data_inicio;
private String hora_inicio;
public int transmissao;

boolean testaData(String data_inicio) {
    if ((data_inicio.charAt(1) >= 0 && data_inicio.charAt(1) <= 9)
            && (data_inicio.charAt(2) >= 0 && data_inicio.charAt(2) <= 9)
            && (data_inicio.charAt(3) == '/')
            && (data_inicio.charAt(4) >= 0 && data_inicio.charAt(4) <= 9)
            && (data_inicio.charAt(5) >= 0 && data_inicio.charAt(5) <= 9)
            && (data_inicio.charAt(6) == '/') && (data_inicio.charAt(7) >= 0
            && data_inicio.charAt(7) <= 9) && (data_inicio.charAt(8) >= 0
            && data_inicio.charAt(8) <= 9)) {
        return true;

    } else {

    }
    return false;

}

public void setDataInicio(String data_inicio) {
    if (testaData(data_inicio)) {
        this.data_inicio = data_inicio;
    }
}

boolean testahora(String hora_inicio) {
    if ((hora_inicio.charAt(1) >= 0 && hora_inicio.charAt(1) <= 9)
            && (hora_inicio.charAt(2) >= 0 && hora_inicio.charAt(2) <= 9)
            && (hora_inicio.charAt(3) == ':')
            && (hora_inicio.charAt(4) >= 0 && hora_inicio.charAt(4) <= 9)
            && (hora_inicio.charAt(5) >= 0 && hora_inicio.charAt(5) <= 9)
            && (hora_inicio.charAt(6) == ':') && (hora_inicio.charAt(7) >= 0
            && hora_inicio.charAt(7) <= 9) && (hora_inicio.charAt(8) >= 0
            && hora_inicio.charAt(8) <= 9)) {
        return true;

    } else {

    }
    return false;

}


public void setHoraInicio(String hora_inicio) {
    if (testahora(hora_inicio)) {
        this.hora_inicio = hora_inicio;
    }
}
public Live(String data_inicio, String hora_inicio, int transmissao, String fonte, int duracao){ 
setDataInicio(data_inicio);
setHoraInicio(hora_inicio);
this.transmissao = transmissao;

}

@Override
public void tocar(Streaming stream){
System.out.println("simulando live");
System.out.println("fonte: "+ stream.fonte);
System.out.println("duraçao: "+stream.duracao);
System.out.println("data de inicio: "+ this.data_inicio);
System.out.println("hora de inicio: "+ this.hora_inicio);
System.out.println("taxa de transmissão: "+ this.transmissao);
}

}

essa é minha main
package revisaoprova;

public class RevisaoProva {

public static void main(String[] args) {
    
    
    int total=0;
Streaming[] playlist = new Streaming[10];
Video video = new Video("", "", "", 0);
Live live= new Live("", "", 0, "", 0);
live.tocar(live);
video.tocar(live);
for (int i = 0; i < 5; i++) {
  live=new Live("16/07/1999", "21:30:00", 200, "google", 300);
  playlist[i]=live;
  video=new Video("Whinderson", "Locao", "youtube", 300);
  playlist[9-i]=video;
}
    for (Streaming playlist1 : playlist) {
        playlist1.tocar(playlist1);
        total += playlist1.duracao;
        System.out.println("================");
    }
System.out.println("duração total da playlist: "+total);
    
}

}

da esse erro

ant -f C:\Users\Rafa\Documents\NetBeansProjects\revisaoProva -Dnb.internal.action.name=run run
init:
Deleting: C:\Users\Rafa\Documents\NetBeansProjects\revisaoProva\build\built-jar.properties
deps-jar:
Updating property file: C:\Users\Rafa\Documents\NetBeansProjects\revisaoProva\build\built-jar.properties
Compiling 1 source file to C:\Users\Rafa\Documents\NetBeansProjects\revisaoProva\build\classes
compile:
run:
Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:658)
at revisaoprova.Live.testaData(Live.java:15)
at revisaoprova.Live.setDataInicio(Live.java:33)
at revisaoprova.Live.(Live.java:63)
at revisaoprova.RevisaoProva.main(RevisaoProva.java:14)
C:\Users\Rafa\Documents\NetBeansProjects\revisaoProva\nbproject\build-impl.xml:1040: The following error occurred while executing this line:
C:\Users\Rafa\Documents\NetBeansProjects\revisaoProva\nbproject\build-impl.xml:805: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 1 segundo)

O testaData está retornando false.

A comparação com caractere deve ser feita com caractere:

  if ((data_inicio.charAt(1) >= '0' && data_inicio.charAt(1) <= '9')
        && (data_inicio.charAt(2) >= '0' && data_inicio.charAt(2) <= '9')

e não com int como vc fez.

recomendo criar um método:

boolean eNumero(char caractere) {
  return caractere >= '0' && caractere <= '9';
}

ou usar Character.isDigit(caractere);