Me ajude a resolver

Eu não sou muito boa em java, estou tento dificuldade para criar um método que receba a quantidade de filmes que a pessoa assistiu e some a duração dos filmes. Aqui esta o que fiz por enquanto. (Não sei se está certo). A parte de receber a quantidade de filmes assistidos deu certo eu não consigo entender o da soma.

import java.util.Scanner;
public class Duracao {
private Scanner entrada;
public void contaTempo () {

	String duracao; // formato x.xx:xx
	int qtdFilmes;
	int totalDuracao = 0; 

	entrada = new Scanner(System.in);
	entrada.useDelimiter("\r\n");
	
	System.out.print("\n Entre com a quantidade de filmes que voce vai assistir: ");
	qtdFilmes = entrada.nextInt();
	
	 for (int i = 0; i < qtdFilmes; i++){
		
	System.out.print("\n Entre com a duração do filme: (x.xx:xx");
	duracao = entrada.next();
	
	
	
	}
}

}

import java.time.Duration;
import java.time.LocalTime;
import java.util.Scanner;

/*
*

  • Eu não sou muito boa em java, estou tento dificuldade para criar um método que receba a quantidade
  • de filmes que a pessoa assistiu e some a duração dos filmes. Aqui esta o que fiz por enquanto.
  • (Não sei se está certo). A parte de receber a quantidade de filmes assistidos deu certo eu não
  • consigo entender o da soma.

Você pode usar a API Java 8 java.time.
Ele tem uma classe de duração que pode ser usada para armazenar e adicionar durações.
Outra solução seria criar sua própria classe de titular de duração e ter métodos para adicionar etc.
*
*
*
*
*/
public class Filmes {

private Scanner entrada;
public void contaTempo () {

	//String duracao; // formato assim para Duration xx:xx:xx
	Duration duracao = Duration.ZERO;	// initialized to zero	
	int qtdFilmes;
	int totalDuracao = 0; 

	entrada = new Scanner(System.in);
	entrada.useDelimiter("\r\n");
	
	System.out.print("\n Entre com a quantidade de filmes que voce vai assistir: ");
	qtdFilmes = entrada.nextInt();
	
	 for (int i = 0; i < qtdFilmes; i++){
	
		System.out.print("\n Entre com a duração do filme: (x.xx:xx");
	
		LocalTime time = LocalTime.parse(entrada.next());// creates a Local time object (hh:mm:ss)
		duracao = duracao.plus(Duration.between(LocalTime.MIN, time)); // converts to Duration PTxHxMXs
		
	
	}
	 
	 System.out.println(duracao.toHoursPart() + ":" +duracao.toMinutesPart() + ":" +duracao.toSecondsPart());
	
}

}

@Joao_Emanuel_Monica Meu professor pediu que eu usasse int totalDuracao = Integer.valueOf(duracao);
Então eu fiz assim.

import java.util.Scanner;
public class Duracao {
private Scanner entrada;
public void contaTempo () {

String duracao = null; // formato x.xx:xx
int qtdFilmes;
int totalDuracao = Integer.valueOf(duracao);

entrada = new Scanner(System.in);
entrada.useDelimiter("\r\n");

System.out.print("\n Entre com a quantidade de filmes que voce vai assistir: ");
qtdFilmes = entrada.nextInt();

for (int i = 0; i < qtdFilmes; i++){

System.out.print("\n Entre com a duração do filme: (x.xx:xx");
duracao = entrada.next();

totalDuracao = duracao + totalDuracao (Integer.valueOf(duracao));
}
}

}

Pior que meu professor não aceita usar os imports que estão ai, pq n chegamos nessa parte
Mas muitooo obrigada!!!

Então poderia ser assim:

import java.util.Scanner;

public class App {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    entrada.useDelimiter("\\D");

    System.out.print("Entre com a quantidade de filmes que voce vai assistir: ");
    int quantidadeDeFilmes = entrada.nextInt();

    int totalDeHoras = 0;
    int totalDeMinutos = 0;
    int totalDeSegundos = 0;

    for (int i = 0; i < quantidadeDeFilmes; i++) {
      System.out.print("Entre com a duração do filme (x.xx:xx): ");
      totalDeHoras += entrada.nextInt();
      totalDeMinutos += entrada.nextInt();
      totalDeSegundos += entrada.nextInt();
    }

    int segundos = totalDeSegundos / 60;
    totalDeMinutos = totalDeMinutos + segundos;
    totalDeSegundos = totalDeSegundos - (segundos * 60);

    int minutos = totalDeMinutos / 60;
    totalDeHoras = totalDeHoras + minutos;
    totalDeMinutos = totalDeMinutos - (minutos * 60);

    System.out.printf("[%dh %dm %ds]\n", totalDeHoras, totalDeMinutos, totalDeSegundos);

    entrada.close();
  }
}

obrigada, ajudou !!

2 curtidas

import java.util.Scanner;

/*&

  • @Author wldomiciano
  • I looked at the solution above. Its a great alternative, but you’ll get a
  • Runtime exception, every-time you type soimething follwed by an enter.
  • This ins because you need to swallowe the nextLine " " character from the enter.
  • Eu olhei para a solução acima. É uma ótima alternativa, mas você obterá uma exceção
  • de tempo de execução toda vez que digitar algo seguido de enter. Isso significa que
  • você precisa engolir o caractere nextLine “” do enter.

abaixo da correção

below the fix
*/
public class App {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
entrada.useDelimiter("\D");

System.out.print("Entre com a quantidade de filmes que voce vai assistir: ");
int quantidadeDeFilmes = entrada.nextInt();
entrada.nextLine(); // swallow the enter

int totalDeHoras = 0;
int totalDeMinutos = 0;
int totalDeSegundos = 0;

for (int i = 0; i < quantidadeDeFilmes; i++) {
  System.out.print("Entre com a duração do filme (x.xx:xx): ");
  totalDeHoras += entrada.nextInt();
  totalDeMinutos += entrada.nextInt();
  totalDeSegundos += entrada.nextInt();
  entrada.nextLine(); // swallow the enter
}

int segundos = totalDeSegundos / 60;
totalDeMinutos = totalDeMinutos + segundos;
totalDeSegundos = totalDeSegundos - (segundos * 60);

int minutos = totalDeMinutos / 60;
totalDeHoras = totalDeHoras + minutos;
totalDeMinutos = totalDeMinutos - (minutos * 60);

System.out.printf("[%dh %dm %ds]\n", totalDeHoras, totalDeMinutos, totalDeSegundos);

entrada.close();

}
}

1 curtida

import java.util.Arrays;
import java.util.Scanner;

/*
*

  • Outra alternativa é usar String.split (String regex) que usa um padrão regex
  • para dividir sua String em String []

*@Author Joao Rolo

  • using the String.split(String regex) method
  • when using “.” you need to add \ else it means any character

*/

public class App2 {

public static void main(String[] args) {
	Scanner entrada = new Scanner(System.in);
  

    System.out.print("Entre com a quantidade de filmes que voce vai assistir: ");
    int quantidadeDeFilmes = entrada.nextInt();
    entrada.nextLine();

    int totalDeHoras = 0;
    int totalDeMinutos = 0;
    int totalDeSegundos = 0;

    for (int i = 0; i < quantidadeDeFilmes; i++) {
      System.out.print("Entre com a duração do filme (x.xx:xx): ");
      String[] tokens = entrada.nextLine().split("(:|\\.){1}"); // split by . or ..
      System.out.println(Arrays.toString(tokens));
      totalDeHoras += Integer.parseInt(tokens[0]);
      totalDeMinutos += Integer.parseInt(tokens[1]);
      totalDeSegundos += Integer.parseInt(tokens[2]);
    }

    int segundos = totalDeSegundos / 60;
    totalDeMinutos = totalDeMinutos + segundos;
    totalDeSegundos = totalDeSegundos - (segundos * 60);

    int minutos = totalDeMinutos / 60;
    totalDeHoras = totalDeHoras + minutos;
    totalDeMinutos = totalDeMinutos - (minutos * 60);

    System.out.printf("[%dh %dm %ds]\n", totalDeHoras, totalDeMinutos, totalDeSegundos);

    entrada.close();

}

}

1 curtida

Obrigadaa, trabalho entregue agora só esperar a nota kkkkk