Partage
  • Partager sur Facebook
  • Partager sur Twitter

{{Titre incorrect}} petite question ?

3 février 2010 à 18:14:58

je debute en java, plus particulièrement en POO. J'essaye de faire une classe extends mais ca marche pas vraiment.

ma question est : faut-il réécrire le main dans la classe qui hérite ou pas ?

merci
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2010 à 18:22:17

Le titre est pas top...
Tu n'as qu'une seule méthode main dans tout ton programme. Sinon ça plante... (En fait tu dis à l'ordi: commence ici, avec une méthode main).
Donc non, tu ne peux pas hériter de Main et donc du ne réécris pas ta méthode main.
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2010 à 18:29:12

compris, mais mon problème reste entier : j ai un fichier txt ma classe principal lit ce fichier et en tire des info (genre : nom prénom) , je voulais que ma classe extends rajoute le sexe de chaque individu (homme ou femme). Si j'utilise le même main il va lire le fichier qui ne contient pas le sexe de chaque individus (et si je mais le fichier avec le sexe de chaque individus la lecture va planter car je n ai pas prévu un main qui prenne en compte le sexe...que faire ?

  • Partager sur Facebook
  • Partager sur Twitter
3 février 2010 à 20:14:34

classe principal (nommée Habitants) :
</span>

package Projet;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Habitants{
	public String nomH;
	public int ageH;
	public String roleH;
	public int combativite;

	public Habitants(String nomHab, int ageHab, String roleHab){
		this.nomH=nomHab;
		this.roleH=roleHab;
		this.ageH=ageHab;
	}
	public Habitants(String nomHab, int ageHab, String roleHab, int force100){
		this(nomHab,ageHab,roleHab);
		combativite=force100;
		}

	
	public final String getNomHab(){ return nomH; }
	public final int getAgeH(){ return ageH;}
	public final String getRoleH(){ return roleH; }
	public final int getcombativite(){ return combativite;}


	public String affiche(){
		String chaine= "--";
		chaine=chaine+ nomH + " a "+ageH+ " ans et est " +roleH;
		if(combativite>50 && ageH<50){
			{chaine=chaine+" : ce villageois a une force de "+this.combativite+ " sur 100, il peut aller combattre les romains. \n"; }
		}
		else{
			if(ageH<50){
				chaine=chaine+" : ce villageois a une force de "+this.combativite+ " sur 100, il ne peut donc pas aller combattre les romains car sa force est insuffisante. \n";}
			else{
				chaine=chaine+" : ce villageois a une force de "+this.combativite+ " sur 100 mais ne peut aller combattre les romains car il est trop agé. \n";}
		}
		return chaine;
		}

	
	public String Combat(){
		String chaine="--";
		int a;
		a=(int)(Math.random()*100);
		if(ageH<50 && combativite>50){
			combativite= (int) (combativite - (int) ( combativite * (a*0.25/100)));
			chaine= chaine + nomH +" a combattu et est revenu avec "+ this.combativite+ " sur 100 de force";
		}
		return chaine;
	}
	public String Recup(){
		String chaine="--";
		int a;
		if(ageH<50 && combativite<=50){
			a=(int)(Math.random()*100);
			combativite= (int) (combativite + (int) ( combativite * (a*0.25/100)));
			chaine= chaine + nomH +" c'est reposé et a désormais "+this.combativite+ " sur 100 de force";
		}
		return chaine;
	}
	public int Annee(){
		int age;
		age=ageH;
		ageH++;
		return age;
	}
	
	public static void main(String[]args){
		Scanner ligne;
		Habitants table[]= new Habitants[15];
		int i=0, j=1, tablong;
		String n, r;
		int a;
		int f;
		try{
			ligne = new Scanner(new File("LirePayix.txt"));
			for(i=0; ligne.hasNext() && (i<table.length); i++){
				n = ligne.next();
				a= ligne.nextInt();
				r= ligne.next();
				f= ligne.nextInt();
				table[i]=new Habitants(n,a,r,f);
			}
		}
		catch(FileNotFoundException e){
			e.printStackTrace();
		}
		tablong=i;
		System.out.println("Le Payix est composé de ces différents habitants : \n");
		
		for(i=0;i<tablong;i++){
			System.out.println(table[i].affiche());
		}
		for(j=1; j<=3; j++){
			
			System.out.println("------------------------------------------------------ Année "+j+" ------------------------------------------------------");
			
			for(i=0;i<tablong;i++){
				
				if(table[i].getAgeH()<50 && table[i].getcombativite()<=50){
					
					System.out.println(table[i].Recup());
				}
				
				else{
						
					if(table[i].getAgeH()<50 && table[i].getcombativite()>50){
						System.out.println(table[i].Combat());
					}
					else{
						System.out.println(table[i].affiche());
					}
				}
				table[i].Annee();	
			}
			String chaine="-- A la fin de l'Année "+j+" voici les nouvelles caracteristiques des habiatants de Payix :\n";
			System.out.println(chaine);
			for(i=0;i<tablong;i++){
				
				System.out.println(table[i].affiche());
			}
		}
	}
}


classe extends (nommée Sexe) :
</span>

package Projet;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Sexe extends Habitants{
	public String sexeH;
	public Sexe(String nomHab, int ageHab, String roleHab, int force100, String sexeHab){
		super(nomHab, ageHab, roleHab, force100);
		sexeH=sexeHab;
	}
	
	public String affiche2(){
		String chaine="--";
		chaine=chaine+ nomH + " a "+ageH+ " ans et est "+roleH;
		if(sexeH=="Homme"){
			if(combativite>50 && ageH<50){
				{chaine=chaine+" : ce villageois a une force de "+this.combativite+ " sur 100, il peut aller combattre les romains. \n"; }
			}
			else{
				if(ageH<50){
					chaine=chaine+" : ce villageois a une force de "+this.combativite+ " sur 100, il ne peut donc pas aller combattre les romains car sa force est insuffisante. \n";}
				else{
					chaine=chaine+" : ce villageois a une force de "+this.combativite+ " sur 100 mais ne peut aller combattre les romains car il est trop agé. \n";}
			}
			return chaine;
		}
		else{
			chaine=chaine+" : cette villageoise reste au village pour aider les hommes à récuperer leurs forces.";
		}
		return chaine;
	}
}



et pour le fichier txt : en noir-->le fichier LirePayix.txt en ajoutant le rouge fichier LirePayix2.txt

Sarkozix 54 chef 78 Homme
Brunix 42 musicienne 52 Femme
Depoixx 20 prince 75 Homme
Guilleminix 20 guerrier 85 Homme
Guix 20 geek 34 Homme
Sasoufix 25 professeur 55 Homme
Fashonix 25 fan_de_mode 20 Femme
monoprix 40 commerçant 65 Homme
atoutprix 25 aventurier 90 Homme
chirurgix 60 medecin 40 Homme


Merci beaucoup...
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2010 à 20:54:22

Déjà, vive les balises de codes !!!
L'idée est que dans ta méthode main tu délègues les tâches aux autres classes.
A la base, met ton traitement du texte dans une classe, qui s'appellera par exemple importCV.
Dedans tu crées une méthode traiteText qui prend en paramètre le nom de ton fichier. C'est elle qui affichera le texte:

Citation : gllmnt

ce villageois a une force de 80 sur 100, il peut aller combattre les romains.


Après tu hérites de cette classe importCVAvecSexe, et tu réécris ta méthode.

Après tu as le problème du main. Tu peux n'en avoir qu'un seul.

La solution la plus simple est de demander à l'utilisateur le type de fichier, et son nom:
Scanner IHM = new Scanner();
System.out.println("Ton fichier contient-t-il le sexe de tes habitants O/N?");
String result = IHM.next();
System.out.println("Quel est le nom de ton fichier?");
String nomFichier = IHM.next();


après tu choisis la classe adaptée en fonction de la réponse avec un if.

Sinon tu crées dans export une méthode qui détecte le type de fichier, le retourne à Main qui choisit la classe.

PS: édit ton post avec les balises de code et ton titre...
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2010 à 22:49:27

Merci pour ta réponse je vais essayer tout ça...
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2010 à 22:49:27

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Le titre du sujet est incorrect


Bonjour,



Ce sujet a un titre qui ne décrit pas correctement le sujet, ou le titre est en majuscules. Vous pouvez re-poster votre sujet en rectifiant ce point.

Voici quelques correspondances pour vous aider à choisir au mieux votre titre :



Merci de votre compréhension :)
Les modérateurs.
  • Partager sur Facebook
  • Partager sur Twitter