I'm stack with the integer reading of this program ...
When entering the measure of an array that I have left in NULL, I need the variable variable to be accepted only if it is a whole number, if not ignore this data and I will have to re-enter it until I type an integer, in principle I have made this code that seems correct, but if I put a decimal number the program keeps running and ends ...
import java.util.Scanner;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author cbermejo
*/
public class ProgramaDeClasesEac {
int[] classesA = null;
int[] classesB = null;
boolean noSurti = true;
Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
ProgramaDeClasesEac programa = new ProgramaDeClasesEac();
programa.inici();
}
private void inici() {
while (noSurti) {
intro();
entraMida();
entraPosicions();
imprimeixPosicions();
Compara();
Surti();
}
}
private void intro() {
System.out.println("Aquest programa et demana que entris la mida de dos clases A y B.\n"
+ "Despres et demanara que entris les edats dels alumnes. \n"
+ "Una vegada estiguien entrades comparara les dues clases y retornara si la classe"
+ "< B > es mes gran que la classe < A >.");
}
private void entraMida() {
System.out.println("Digam la mida que tenen les clases A i B:");
**int mida = 0;
if (scan.hasNextInt()) {
mida = scan.nextInt();
} else {
scan.next();
}**
classesA = new int[mida];
classesB = new int[mida];
}
private void entraPosicions() {
System.out.println("Ara digam les edats del nens de la classe A:");
for (int i = 0; i < classesA.length; i++) {
if (scan.hasNextInt()) {
classesA[i] = scan.nextInt();
if (classesA[i] > 0 && classesA[i] < 21) {
System.out.println("la posicio: " + (i + 1) + " de la clase A es: " + classesA[i]);
} else {
System.out.println("la edat esta compresa entre 1 any i 20 anys.");
i--;
}
} else {
System.out.println("Aquest no es un valor sencer");
i--;
scan.next();
}
scan.nextLine();
}
System.out.println("Ara digam les edats del nens de la classe B:");
for (int i = 0; i < classesB.length; i++) {
if (scan.hasNextInt()) {
classesB[i] = scan.nextInt();
if (classesB[i] > 0 && classesB[i] < 21) {
System.out.println("la posicio: " + (i + 1) + " de la clase B es: " + classesB[i]);
} else {
System.out.println("la edat esta compresa entre 1 any i 20 anys.");
i--;
}
} else {
System.out.println("Aquest no es un valor sencer");
i--;
scan.next();
}
scan.nextLine();
}
}
private void imprimeixPosicions() {
System.out.print("Collectio 1: \n ");
for (int i = 0; i < classesA.length; i++) {
System.out.print(classesA[i] + " ");
}
System.out.println(" ");
System.out.print("Collectio 2: \n ");
for (int i = 0; i < classesB.length; i++) {
System.out.print(classesB[i] + " ");
}
System.out.println(" ");
}
private void Compara() {
int contador = 0;
for (int i = 0; i < classesA.length; i++) {
for (int j = 0; j < classesB.length; j++) {
if (classesB[i] <= classesA[j]) {
contador++;
}
}
}
if (contador >= 1) {
System.out.println("No es cumpleix que la clase B te els alumnes mayors que els de la A");
} else {
System.out.println("Correcte els alumnes classe B son mes grans que els de la classe A");
}
}
private void Surti() {
System.out.println("S ha acabat el joc.");
noSurti = false;
}
}