Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/henriqueotogami/learning-java

Repositório de estudos de Java para o meu novo trabalho na CAS Tecnologia. Dentre outras tecnologias, Java é utilizado para Sistemas Embarcados.
https://github.com/henriqueotogami/learning-java

embedded-systems intellij-idea java-8 sistemas-embarcados

Last synced: about 14 hours ago
JSON representation

Repositório de estudos de Java para o meu novo trabalho na CAS Tecnologia. Dentre outras tecnologias, Java é utilizado para Sistemas Embarcados.

Awesome Lists containing this project

README

        

## Repositório de estudos em Java

#### Início: 26-07-2021 — Em andamento

#### A princípio, estudo Java para trabalhar nos projetos de sistemas embarcados da [CAS Tecnologia](https://www.castecnologia.com.br).


















wakatime














Udemy: Java 2020 COMPLETO: Do Zero ao Profissional + Projetos!

> Fundamentos Java, Orientação a Objeto, Programação Funcional, MySQL, MongoDB, Spring Boot, JavaFX, JPA, Hibernate e mais.
>
> Lecionado por Leonardo Moura Leitao | Arquiteto de Software
>
> 535 aulas
>
> 77 horas

- [x] Algoritmo e Estrutura de Dados
- [x] Fundamentos da Linguagem Java
- [x] Estruturas de Controle
- [x] Classes, Objetos, Métodos
- [x] Orientação a Objeto
- [x] Encapsulamento, Herança, Polimorfismo e Abstração
- [x] Lambdas
- [x] Stream API
- [x] Tratamento de Exceções
- [x] JavaFX
- [x] Banco de Dados Relacional
- [x] Bando de Dados NÃO Relacional (NoSQL)
- [x] JPA (Hibernate)
- [x] Spring Boot

Teoria

- [x] Seção 01: Introdução;
- [x] Seção 02: Configuração do Ambiente;
- [x] Seção 03: Fundamentos;
- [x] Secão 04: Estrutura de Controle;
- [x] Seção 05: Classes e Métodos;
- [x] Seção 06: Arrays e Collections;
- [x] Seção 07: Orientação a Objetos;
- [x] Secão 08: Lambdas;
- [x] Seção 09: Stream API;
- [x] Seção 10: Tratamento de Erros;
- [x] Seção 11: Projeto - Campo Minado (+JUnit 5);
- [x] Secão 12: Generics;
- [x] Seção 13: Java Desktop com Swing;
- [x] Seção 14: Banco de Dados Relacional;
- [x] Seção 15: Banco de Dados com JDBC;
- [x] Seção 16: Java Persistence API (JPA);
- [x] Seção 17: Modularidade em Java;
- [x] Seção 18: JavaFX;
- [x] Seção 19: Conceitos sobre Web;
- [x] Secão 20: Spring Boot;
- [x] Seção 21: Banco de Dados Não Relacional (NoSQL);
- [x] Seção 22: Conclusão;


Projetos



W3Schools - Teoria

[Tutoriais (clique aqui)](https://www.w3schools.com/java/default.asp)

[Exercícios (clique aqui)](https://www.w3schools.com/java/exercise.asp)

Java Tutorial

- [x] Java Syntax;
- [x] Java Comments;
- [x] Java Variables;
- [x] Java Data Types;
- [x] Java Type Casting;
- [x] Java Operators;
- [x] Java Strings;
- [x] Java Math;
- [x] Java Booleans;
- [x] Java If ... Else;
- [x] Java Switch;
- [x] Java While Loop;
- [x] Java For Loop;
- [x] Java Break / Continue;
- [x] Java Arrays;

Java Methods

- [ ] Java Methods;
- [ ] Java Method Parameters;
- [ ] Java Method Overloading;
- [ ] Java Scope;
- [ ] Java Recursion;

Java Classes

- [ ] Java OOP;
- [ ] Java Classes/Objects;
- [ ] Java Class Attributes;
- [ ] Java Class Methods;
- [ ] Java Constructors;
- [ ] Java Modifiers;
- [ ] Java Encapsulation;
- [ ] Java Packages / API;
- [ ] Java Inheritance;
- [ ] Java Polymorphism;
- [ ] Java Inner Classes;
- [ ] Java Abstraction;
- [ ] Java Interface;
- [ ] Java Enums;
- [ ] Java User Input;
- [ ] Java Date;
- [ ] Java ArrayList;
- [ ] Java LinkedList;
- [ ] Java HashMap;
- [ ] Java HashSet;
- [ ] Java Iterator;
- [ ] Java Wrapper Classes;
- [ ] Java Exceptions;
- [ ] Java RegEx;
- [ ] Java Threads;
- [ ] Java Lambda;

Java File Handling

- [ ] Java Files;
- [ ] Java Create/Write Files;
- [ ] Java Read Files;
- [ ] Java Delete Files;

Java How To

- [ ] Add Two Numbers;

Java Reference

- [ ] Java Keywords;
- [ ] Java String Methods;
- [ ] Java Math Methods;

Java Examples

- [ ] Java Examples;
- [ ] Java Compiler;
- [ ] Java Exercises;
- [ ] Java Quiz;
- [ ] Java Certificate;


#### Mini projetos de estudo

- [x] Mini projeto 01: Pokedéx Reativo;
- [x] Mini projeto 02: Interface GUI;
- [x] Mini projeto 03: String Reverse;
- [x] Mini projeto 04: Loop Pattern;
- [x] Mini projeto 05: Arrow Keys;
- [x] Mini projeto 06: Add Numbers;
- [x] Mini projeto 07: Random Numbers;
- [x] Mini projeto 08: Duplicate Characters;
- [x] Mini projeto 09: Prime Numbers;
- [x] Mini projeto 10: Palindromes;
- [x] Mini projeto 11: Factorial with Recursion;
- [x] Mini projeto 12: Tic Tac Toe Game;
- [x] Mini Projeto 13: Currency Formatter Challenge by HackerRank;
- [x] Mini Projeto 14: Fortune Cookie;
- [x] Mini projeto 15: Encryption;
- [x] Mini projeto 16: Fart Generator;
- [x] Mini projeto 17: CSV File Reader;
- [x] Mini projeto 18: Snake Game Desktop;

Veja mais: Descrição | Screenshots | GIFs | Código de exemplo

### Mini Projeto 01: Pokedéx Reativo

#### [Desenvolvido por: @anabneri | Ana Beatriz Neri](https://github.com/anabneri/pokedex-youtube)

#### [Playlist no Youtube da @anabneri](https://www.youtube.com/watch?v=7DbPSiA4ENg&list=PLmdyvKzGNf-xpnHkvaut7FwlNt3_lsbYz)

#### [Artigo da @anabneri](https://dev.to/womakerscode/criando-seu-pokedex-com-spring-webflux-mongodb-deploy-no-heroku-21f5)

O que é uma Pokedéx?
A Pokédex, também conhecida como Poké-Agenda no Brasil (e ainda como Dexter ou Dextette, dependendo da voz masculina ou feminina do aparelho) é uma enciclopédia virtual portátil de alta tecnologia que os treinadores Pokémon transportam para registra todas as espécies diferentes de Pokémon que são encontradas durante a sua viagem como treinadores. Em geral, quando são cumpridos determinados requisitos, a capacidade pode ser aumentada permitindo que a Pokédex possa armazenar dados de outros Pokémon, que não são comuns, assim como os Pokémon de outras regiões.

[Saiba mais](https://pokemon.fandom.com/pt-br/wiki/Pokédex)


Descrição do projeto
Neste projeto será criada uma aplicação de Create, Read, Update e Delete usando Spring Webflux, com os dados salvos num banco MongoDB e por fim hospedado na Amazon Web Services.

#### Arquitetura

- Elástica;
- Orientação a mensagens;
- Responsiva;
- Resiliente;

#### Tecnologias

- Java JDK 8;
- IDE IntelliJ IDEA CE;
- Maven 3;
- JUnit 5;
- Spring Reactive Web;
- Spring Data Reactive MongoDB;
- Embedded MongoDB Database;
- AWS;

> Spring Webflux é um módulo no SpringBoot, com ele além de criarmos um CRUD, podemos criar uma sequência de eventos, mas isso não quer dizer que sempre devemos usar aplicações reativas, tudo depende do seu cenário e da viabilidade.


Screenshots | GIFs

Código de exemplo

```java
package com.hmap.pokedex;

import com.hmap.pokedex.model.Pokemon;
import com.hmap.pokedex.repository.PokedexRepository;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import reactor.core.publisher.Flux;

@SpringBootApplication
public class PokedexApplication {

public static void main(String[] args) { SpringApplication.run(PokedexApplication.class, args); }

@Bean
CommandLineRunner init (ReactiveMongoOperations operations,PokedexRepository repository) {
return args -> {
Flux pokedexFlux = Flux.just(
new Pokemon(null, "Bulbassaur", "Seed", "OverGrow", 06.09),
new Pokemon(null, "Charizard", "Fire", "Blaze", 90.05),
new Pokemon(null, "Caterpie", "Earthworm", "Shield Dust", 02.09),
new Pokemon(null, "Blastoise", "Shellfish", "Torrent", 06.09))

.flatMap(repository::save);

pokedexFlux
.thenMany(repository.findAll())
.subscribe(System.out::println);
};
}
}
```


### Mini Projeto 02: Interface GUI

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://www.youtube.com/watch?v=5o3fMLPY7qY)

Descrição do projeto
Desenvolvimento de uma Interface Gráfica do Usuário (GUI), contendo um título fixo, um botão e um texto informando a quantidade de vezes que o botão foi pressionado.

Screenshots | GIFs

Código de exemplo

```java

public class GUI implements ActionListener {

private int explosionsCount = 0;
private JFrame guiFrame;
private JLabel explosionLabel;
private JPanel guiPanel;

public GUI() {
guiFrame = new JFrame();

JButton explosionButton = new JButton(" Clique aqui para explodir 🧨 ");
explosionButton.addActionListener(this);

explosionLabel = new JLabel("Número de explosões: 0");

guiPanel = new JPanel();
guiPanel.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
guiPanel.setLayout(new GridLayout(0,1));
guiPanel.add(explosionButton);
guiPanel.add(explosionLabel);

guiFrame.add(guiPanel, BorderLayout.CENTER);
guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiFrame.setTitle("GUI Explosiva 🔥");
guiFrame.pack();
guiFrame.setVisible(true);
}

public static void main(String[] args) {
new GUI();
}

@Override
public void actionPerformed(ActionEvent e) {
explosionsCount++;
explosionLabel.setText("Número de explosões: " + explosionsCount);
}
}

```


### Mini Projeto 03: String Reverse

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/orUTq3CahRE)

Descrição do projeto
Desenvolvimento de um script que inverta a ordem de cada caractere na sentença da frase, de modo que a leitura seja invertida.

Screenshots | GIFs

Código de exemplo

```java

public class ReverseString {

public static void main(String[] args) {

final String reverseString = reverse("Explosion");
System.out.println("String reverse: " + reverseString);
}

public static String reverse(String string) {
final char[] stringLetters = new char[string.length()];

int letterIndex = 0;
for (int index = string.length()-1; index >= 0; index--) {
stringLetters[letterIndex] = string.charAt(index);
letterIndex++;
}

String stringReversed = "";
for (int index = 0; index < string.length(); index++) {
stringReversed = stringReversed + stringLetters[index];
}

return stringReversed;
}
}

```


### Mini Projeto 04: Loop Pattern

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/3gzvVPD3n0w)

Descrição do projeto
Desenvolvimento de um script que obtém o número de estrelas solicitado ao usuário e imprime o valor elevado ao quadrado, porém mostrado como uma somatória de estrelas (ou asteriscos) em linhas diferentes.

Screenshots | GIFs

Código de exemplo

```java

public class LoopPattern {

public static void main(String[] args) {
System.out.println("Obi-Wan Kenobi says: Hello there! How many stars would you like?");
Scanner scanKeyboard = new Scanner (System.in);
int numberOfStars = scanKeyboard.nextInt();

for(int indexIncreasingLineStar = 1; indexIncreasingLineStar <= numberOfStars; indexIncreasingLineStar++){

for(int indexIncreasingRowStar = 0; indexIncreasingRowStar < indexIncreasingLineStar; indexIncreasingRowStar++){
System.out.print("*");
}
System.out.println();
}

for(int indexDecreasingLineStar = (numberOfStars - 1); indexDecreasingLineStar > 0; indexDecreasingLineStar--){

for(int indexDecreasingRowStar = 0; indexDecreasingRowStar < indexDecreasingLineStar; indexDecreasingRowStar++){
System.out.print("*");
}
System.out.println();
}
}
}

```


### Mini Projeto 05: Arrow Keys

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/GAn5evoACsM)

Descrição do projeto
Desenvolvimento de um script que obtém os eventos do teclado ao pressionar as teclas de setas e mostra essa contagem em uma janela GUI (Interface Gráfica do Usuário).

Screenshots | GIFs

Código de exemplo

```java

public class ArrowKeys {

public ArrowKeys() {

JFrame frame = new JFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setFocusable(true);

JPanel panel = new JPanel();
JLabel upArrow = new JLabel();
JLabel downArrow = new JLabel();
JLabel leftArrow = new JLabel();
JLabel rightArrow = new JLabel();

panel.add(upArrow);
panel.add(downArrow);
panel.add(leftArrow);
panel.add(rightArrow);

frame.addKeyListener(new KeyListener() {

int upArrowCount = 0;
int downArrowCount = 0;
int leftArrowCount = 0;
int rightArrowCount = 0;

@Override
public void keyTyped(KeyEvent e) {

}

@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_UP:
upArrow.setText("Up: " + Integer.toString(upArrowCount++));
break;
case KeyEvent.VK_DOWN:
downArrow.setText("Down: " + Integer.toString(downArrowCount++));
break;
case KeyEvent.VK_LEFT:
leftArrow.setText("Left: " + Integer.toString(leftArrowCount++));
break;
case KeyEvent.VK_RIGHT:
rightArrow.setText("Right: " + Integer.toString(rightArrowCount++));
break;
}
}

@Override
public void keyReleased(KeyEvent e) {

}
});
frame.add(panel);

upArrow.setText("Up: 0");
downArrow.setText("Down: 0");
leftArrow.setText("Left: 0");
rightArrow.setText("Right: 0");
}
}

```


### Mini Projeto 06: Add Numbers

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/dVTgNsv3pX4)

Descrição do projeto
Desenvolvimento de um script que obtém os números digitados pelo usuário e retorna a soma de dois números.

Screenshots | GIFs

Código de exemplo

```java

public class AddNumbers {

public static void main(String[] args) {
Scanner scanKeyboard = new Scanner(System.in);
System.out.println("Enter the first number: ");
int firstNumber = scanKeyboard.nextInt();

System.out.println("Enter the second number: ");
int secondNumber = scanKeyboard.nextInt();

System.out.println("The result of the sum: " + (firstNumber + secondNumber));
}
}

```


### Mini Projeto 07: Random Numbers

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/ucS3vwP9jnk)

Descrição do projeto
Desenvolvimento de um script que retorna números aleatórios com intervalo definido de 0 a 6.

Screenshots | GIFs

Código de exemplo

```java

public class RandomNumbers {

public static void main(String[] args) {

Random randomNumbers = new Random();
int numberChosen = (randomNumbers.nextInt(6) + 1);

System.out.println("Number randomly chosen: " + numberChosen);
}

public RandomNumbers() {
}
}

```


### Mini Projeto 08: Duplicate Characters

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/tqI18_X_uoc)

Descrição do projeto
Desenvolvimento de um script que retorna caracteres repetidos dentro de uma String, inclusive espaços vazios.

- [ ] TODO - Melhoria: Analisar somente caracteres e não espaços vazios;
- [ ] TODO - Melhoria: Contar quantas vezes cada caractere foi repetido na String analisada.

Screenshots | GIFs

Código de exemplo

```java

public static void main(String[] args) {

String sentence = "How many duplicates are there?";
System.out.println(sentence);

StringBuilder characters = new StringBuilder();
StringBuilder duplicates = new StringBuilder();

for (int i = 0; i < sentence.length(); i++) {
String current = Character.toString(sentence.charAt(i));

if (characters.toString().contains(current)) {

if (!duplicates.toString().contains(current)){
duplicates.append(current).append(",");
}
}

characters.append(current);
}

System.out.println(duplicates);
}

```


### Mini Projeto 09: Prime Numbers

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/Hk9n0cWE2OI)

Descrição do projeto
Desenvolvimento de um script que retorna todos os números primos a partir de um intervalo numérico informado pelo usuário.

Screenshots | GIFs

Código de exemplo

```java

public class PrimeNumbers {

public static void main(String[] args) { System.out.println(findPrimes(1, 100)); }

public static ArrayList findPrimes(int startNumber, int endNumber) {

ArrayList primes = new ArrayList();

for (int number = startNumber; number < endNumber; number++) {

boolean numberPrime = true;
int numberPair = 2;
float division = (float) (number / 2);
int numberLeftOver = (number % numberPair);

while (division >= numberPair) {
if ( numberLeftOver == 0) {
numberPrime = false;
break;
}

numberPair++;
}

if (numberPrime) {
primes.add(number);
}
}
return primes;
}
}

```


### Mini Projeto 10: Palindromes

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/AoRYeB7Os3M)

Descrição do projeto
Desenvolvimento de um script que retorna se uma frase ou palavra é palíndroma. Palímdroma é a palavra, grupo de palavras, verso ou número que se lê da mesma maneira da esquerda para a direita ou da direita para a esquerda.

Screenshots | GIFs

Código de exemplo

```java

public static void main(String[] args) {

// Exemples: mom, dad, poop, race car, nurses run

String original = "nurses run";
original = original.replace(" ", "");

String reverse = "";
for( int index = (original.length() - 1); index >= 0; index--) {
reverse += original.charAt(index);
System.out.println(reverse);
}

boolean palindrome = true;
for(int index = 0; (index < original.length()); index++) {

if(original.charAt(index) != reverse.charAt(index)) {
palindrome = false;
}
}

if(palindrome) {
System.out.println("Palindrome!");
} else {
System.out.println("Not a palindrome!");
}
}

```


### Mini Projeto 11: Factorial with Recursion

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/OZuzm1i9g1c)

Descrição do projeto
Desenvolvimento de um script que retorna o resultado a partir da operação fatorial de um número informado pelo usuário, utilizando a Recursão (ou Recursividade).

>
> O fatorial de um número inteiro e positivo “n”, representado por “n!” é obtido a partir da multiplicação de todos os seus antecessores até o número um, cuja expressão genérica é n! = n . (n – 1).

> A recursão na programação é bem exemplificada quando uma função é definida em termos de si mesma. Um exemplo da aplicação da recursão são os parsers (analisadores gramaticais) para linguagens de programação. Uma grande vantagem da recursão é que um conjunto infinito de sentenças possíveis, designs ou outros dados podem ser definidos, analisados ou produzidos por um programa de computador finito.

Screenshots | GIFs

Código de exemplo

```java

public static void main(String[] args) {
System.out.println(factorial(5));
}

public static int factorial(int number) {

if (number == 1) {

System.out.println("factorial(" + number + ") = 1");
return 1;
} else {

System.out.println("factorial(" + number + ") = " + number + " * factorial(" + (number - 1) + ")");
return number * factorial(number - 1);
}
}

```


### Mini Projeto 12: Tic Tac Toe Game

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/gQb3dE-y1S4)

Descrição do projeto
Desenvolvimento de um script que "simula" o clássico jogo da velha, com o usuário versus o computador. Nele, o jogador que preencher três sequências de símbolos vence o jogo.

>
> O jogo da velha (português brasileiro) ou jogo do galo (português europeu) ou três em linha é um jogo e/ou passatempo popular. É um jogo de regras extremamente simples, que não traz grandes dificuldades para seus jogadores e é facilmente aprendido. A origem é desconhecida, com indicações de que pode ter começado no antigo Egito, onde foram encontrados tabuleiros esculpidos na rocha, que teriam mais de 3.500 anos. De alguma forma, é um jogo "aparentado" dos "Merels".
>

Screenshots | GIFs

Código de exemplo

```java

public static void main (String[] args) {

char[][] gameBoard = {
{' ', '|', ' ', '|', ' '},
{'-', '+', '-', '+', '-'},
{' ', '|', ' ', '|', ' '},
{'-', '+', '-', '+', '-'},
{' ', '|', ' ', '|', ' '},
};

printGameBoard(gameBoard);
System.out.println("Enter your placement (1 to 9): ");

while(true) {
Scanner keyboardScanner = new Scanner(System.in);
int positionPlayer = keyboardScanner.nextInt();

while(positionsPlayer.contains(positionPlayer) || positionsCPU.contains(positionPlayer)){
System.out.println("Position taken! Enter a correct position.");
positionPlayer = keyboardScanner.nextInt();
}

placePiece(gameBoard, positionPlayer, "player");

String battleResult = checkWinner();
if (battleResult.length() > 0) {
System.out.println(battleResult);
break;
}

Random randomPositionCPU = new Random();
int positionCPU = randomPositionCPU.nextInt(9) + 1;

while(positionsPlayer.contains(positionCPU) || positionsCPU.contains(positionCPU)){
positionCPU = randomPositionCPU.nextInt(9) + 1;
}

placePiece(gameBoard, positionCPU, "CPU");
printGameBoard(gameBoard);

battleResult = checkWinner();

if (battleResult.length() > 0) {
System.out.println(battleResult);
break;
}
}
}

```


### Mini Projeto 13: [Currency Formatter Challenge by HackerRank](https://www.hackerrank.com/challenges/java-currency-formatter/problem)

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/L8loHaj-Bgo)

Descrição do projeto

Desenvolvimento de um script que retorna formatado em moeda, baseado em localidade ou país, o valor informado.
É recomendado o uso da classe ` NumberFormat ` e o método ` getCurrencyInstance `.

Screenshots | GIFs

Código de exemplo

```java

public class CurrencyFormatted {

public static void main(String[] args) {

Scanner inputScanner = new Scanner(System.in);
double payment = inputScanner.nextDouble();
inputScanner.close();

// Write your code here.
String us = NumberFormat.getCurrencyInstance(Locale.US).format(payment);
String india = NumberFormat.getCurrencyInstance(new Locale("en", "in")).format(payment);
String china = NumberFormat.getCurrencyInstance(Locale.CHINA).format(payment);
String france = NumberFormat.getCurrencyInstance(Locale.FRANCE).format(payment);

System.out.println("US: " + us);
System.out.println("India: " + india);
System.out.println("China: " + china);
System.out.println("France: " + france);
}
}

```


### Mini Projeto 14: Fortune Cookie

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/VGq6i1CDpdc)

Descrição do projeto

Desenvolvimento de um script que retorna uma mensagem aleatória de biscoitos da sorte (Fortune Cookie).

> Um biscoito da sorte é um biscoito crocante e açucarado geralmente feito de farinha, açúcar, baunilha e óleo de gergelim com um pedaço de papel dentro, uma "fortuna", geralmente um aforismo ou uma vaga profecia. A mensagem dentro também pode incluir uma frase em chinês com tradução e / ou uma lista de números da sorte usados por alguns como números de loteria; uma vez que relativamente poucas mensagens distintas são impressas, no caso registrado em que os números vencedores foram impressos, a loteria teve um número inesperadamente alto de vencedores compartilhando um prêmio.
>

Screenshots | GIFs

Código de exemplo

```java

public class Fortunes {

static String[] fortunes = {
"Today it's up to you to create the peacefulness you long for.",
"A friend asks only for your time not your money.",
"If you refuse to accept anything but the best, you very often get it.",
"A smile is your passport into the hearts of others.",
"A good way to keep healthy is to eat more Chinese food.",
"Your high-minded principles spell success.",
"Hard work pays off in the future, laziness pays off now.",
"Change can hurt, but it leads a path to something better.",
"Enjoy the good luck a companion brings you.",
"People are naturally attracted to you.",
"Hidden in a valley beside an open stream- This will be the type of place where you will find your dream.",
"A chance meeting opens new doors to success and friendship."
};

public static void main(String[] args) {
Random random = new Random();
int randomFortunes = random.nextInt(fortunes.length);
System.out.println(fortunes[randomFortunes]);
}
}

```


### Mini Projeto 15: Encryption

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/8wlE6DgOWBs)

Descrição do projeto

Desenvolvimento de um script que retorna uma mensagem criptografada.

Screenshots | GIFs

Código de exemplo

```java

public static void main(String[] args) {

int key = 6;
String text = "Hey, how's it hangin?";
System.out.println(text);

char[] chars = text.toCharArray();

for (char c : chars) {
c += key;
System.out.print(c);
}
}

```


### Mini Projeto 16: Fart Generator

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/rNf8mT0qHLY)

Descrição do projeto

Desenvolvimento de um script que retorna uma mensagem baseada no seu nome e dia de nascimento.

Screenshots | GIFs

Código de exemplo

```java

public static void main(String[] args) {

System.out.println("Enter the first letter of your name and \n"
+ "the day of the month you were born: ");

Scanner keyboardScanner = new Scanner(System.in);

String letter = keyboardScanner.next().toUpperCase();
int day = keyboardScanner.nextInt();

HashMap letters = new HashMap();
letters.put("A", "WRETCHED");
letters.put("B", "DEEPLY");
letters.put("C", "PHENOMENAL");
letters.put("D", "GROSSLY");
letters.put("E", "MONUMENTAL");
letters.put("F", "EXPLOSIVE");
letters.put("G", "UNEXPECTEDLY");
letters.put("H", "THICK");
letters.put("I", "TINY");
letters.put("J", "LONG");
letters.put("K", "GIGANTIC");
letters.put("L", "TREMENDOUS");
letters.put("M", "DANGEROUSLY");
letters.put("N", "CRAZY");
letters.put("O", "SCRAWNY");
letters.put("P", "BEAUTIFLY");
letters.put("Q", "ROTTENLY");
letters.put("R", "SPOOKY");
letters.put("S", "LUMPY");
letters.put("T", "MODERATELY");
letters.put("U", "HAPPY");
letters.put("V", "TROUBLESOME");
letters.put("W", "SAGGY");
letters.put("X", "HEARTY");
letters.put("Y", "BIG");
letters.put("Z", "LUXURIOUS");

HashMap days = new HashMap();
days.put(1, "SOUR");
days.put(2, "GREAT");
days.put(3, "OLD");
days.put(4, "LOUD");
days.put(5, "LITTLE");
days.put(6, "EPIC");
days.put(7, "WET");
days.put(8, "DANK");
days.put(9, "FAKE");
days.put(10, "SENILE");
days.put(11, "MUSTY");
days.put(12, "SHARP");
days.put(13, "DANGEROUS");
days.put(14, "MONOTONE");
days.put(15, "SQUEAKY");
days.put(16, "NOISELESS");
days.put(17, "ROTTEN");
days.put(18, "FAT");
days.put(19, "SOFT");
days.put(20, "POTENT");
days.put(21, "SUDDEN");
days.put(22, "POWERFUL");
days.put(23, "STRANGE");
days.put(24, "STURDY");
days.put(25, "FLAT");
days.put(26, "FULL");
days.put(27, "WINDY");
days.put(28, "HORRID");
days.put(29, "HOT");
days.put(30, "SILENT");

System.out.println("You are a " + letters.get(letter) + " " + days.get(day) + " FART");
}

```


### Mini Projeto 17: CSV File Reader

#### Desenvolvido por: [@Alex Lee](https://github.com/alexlorenlee)

#### [Vídeo no Youtube](https://youtu.be/-Aud0cDh-J8)

Descrição do projeto

Desenvolvimento de um script que retorna dados de data e descrição do crime ocorrido em 2006, a partir de um arquivo em CSV.
O arquivo de crime de Sacramento em janeiro de 2006 contém 7.584 registros de crimes, conforme disponibilizado pelo Departamento de Polícia de Sacramento.
As agências de aplicação da lei devem gostar de trabalhar com este conjunto de dados.

> Por definição, CSV é um formato de arquivo que significa “comma-separated-values” (valores separados por vírgulas).
> Isso significa que os campos de dados indicados neste formato normalmente são separados ou delimitados por uma vírgula.

[Crime Records - CSV File](https://support.spatialkey.com/spatialkey-sample-csv-data/)

Screenshots | GIFs

Código de exemplo

```java

public static void main(String[] args) throws IOException {

String filePath = "/Users/henriquematheusalvespereira/Downloads/SacramentocrimeJanuary2006.csv";
String line = "";
int quantityCrimes = 0;
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));

while ((line = bufferedReader.readLine()) != null) {
String[] crimeValues = line.split(",");
System.out.println("Date | Time: " + crimeValues[0] + " | Crime event: " + crimeValues[5]);
quantityCrimes += 1;
}
System.out.println("\namount of crimes registered in 2006: " + quantityCrimes);
} catch (FileNotFoundException exception) {
exception.printStackTrace();
} catch (IOException exception) {
exception.printStackTrace();
}
}

```


### Mini Projeto 18: Snake Game Desktop

#### Desenvolvido por: [@Bro Code](https://github.com/BroCodeHelp)

#### [Vídeo no Youtube](https://youtu.be/bI6e6qjJ8JQ)

Descrição do projeto

Desenvolvimento de um script que simula o clássico jogo da cobrinha.

Screenshots | GIFs

Código de exemplo

```java

```


#### IDE: IntelliJ IDEA

Plugins

- [Atom Material Icons](https://plugins.jetbrains.com/plugin/10044-atom-material-icons);
- [Codota AI Autocomplete for Java](https://plugins.jetbrains.com/plugin/7638-codota-ai-autocomplete-for-java-and-javascript);
- [GitToolBox](https://plugins.jetbrains.com/plugin/7499-gittoolbox);
- [Material Theme UI](https://plugins.jetbrains.com/plugin/8006-material-theme-ui);
- [Nyan Progress Bar](https://plugins.jetbrains.com/plugin/8575-nyan-progress-bar);
- [One Dark Theme](https://plugins.jetbrains.com/plugin/11938-one-dark-theme);
- [Rainbow Brackets](https://plugins.jetbrains.com/plugin/10080-rainbow-brackets);
- [Tabnine AI Code Completion](https://plugins.jetbrains.com/plugin/12798-tabnine-ai-code-completion-js-java-python-ts-rust-go-php--more);


### Créditos

- [x] [Shields.io | Badges Info from Github](https://img.shields.io)
- [x] [Alexandre Sanlim | Badges Tech](https://github.com/alexandresanlim/Badges4-README.md-Profile)
- [x] [Michiel Leunens| Unsplash](https://unsplash.com/photos/fBB7FeS4Xas)


> ### Caso você queira ajudar a melhorar este repositório, qualquer ajuda é bem vinda.

- [x] Faça um **fork** deste repositório (https://github.com/henriqueotogami/learning-java/fork);
- [x] Crie um **branch** com as suas modificações ` git checkout -b meu-novo-recurso `;
- [x] Faça um **commit** ` git commit -am 'Adicionando um novo recurso ...'`;
- [x] Faça um **push** ` git push origin meu-novo-recurso ` ;
- [x] Crie uma nova **pull request** neste repositório.

**Depois que sua solicitação (pull request) for aceita e adicionada (merged) ao ramo principal (branch main), você pode excluir sua branch tranquilamente.**

> ### **Muito obrigado, e que a força esteja com você.**
>
> ### Desenvolvido por **HMAP | Henrique Matheus Alves Pereira** 🦁