1

Bonjour,

Je travaille sur un TP d'informatique en Java et j'ai un petit problème de débutant, j'espère que vous pourrez m'aider :

Je voudrai récupérer la valeur d'une variable du main de mon programme dans une autre classe.

Je dois avoir un problème de syntaxe :

____________________________________________________________­______________________
import java.util.Scanner;

public class CTabNotes {
private float [] tab;
private int Nbcasesutil;
private int i;
private float val=1;
int choix = ClassePrincipale.main(String[]args);

public CTabNotes() {
tab = new float[100];
Nbcasesutil = 0;

if (choix = 1){
while(i<100 && val >=0){
System.out.println("Saisir une note comprise entre 0 et 20 ou négative pour sortir :");
Scanner clavier = new Scanner(System.in);
val=clavier.nextFloat();
if(val>=0 & val<=20){
tab[i] = val;
i++;
Nbcasesutil++;
}

}
}
}
...

import java.util.Scanner;

public class ClassePrincipale {

public static void main(String[]args){
private int choix;
System.out.println("Comment voulez-vous entrer vos notes ? Tapez " +
" 1 – sous forme de tableau non trié" +
" 2 – sous forme de tableau trié" +
" 3 – sous forme de liste non triée" +
" 4 – sous forme de liste triée");
Scanner clavier = new Scanner(System.in);
choix = clavier.nextInt();

switch(choix){ ...
________________________________________________________________________

C'est donc la variable choix que je veux récupérer dans l'autre classe.
J'ai essayé avec // int choix = ClassePrincipale.main(String[]args);// mais ça ne fonctionne pas...
Il me signale aussi une erreur dans la déclaration de la variable choix dans le main...

Merci de bien vouloir m'aider.

2

(la balise PRE permet un affichage qui conserve l'indentation...) import java.util.Scanner; public class CTabNotes { private float [] tab; private int Nbcasesutil; private int i; private float val=1; int choix = ClassePrincipale.main(String[]args); public CTabNotes() { tab = new float[100]; Nbcasesutil = 0; if (choix = 1){ while(i<100 && val >=0){ System.out.println("Saisir une note comprise entre 0 et 20 ou négative pour sortir :"); Scanner clavier = new Scanner(System.in); val=clavier.nextFloat(); if(val>=0 & val<=20){ tab[i] = val; i++; Nbcasesutil++; } } } } ... import java.util.Scanner; public class ClassePrincipale { public static void main(String[]args){ private int choix; System.out.println("Comment voulez-vous entrer vos notes ? Tapez " + " 1 – sous forme de tableau non trié" + " 2 – sous forme de tableau trié" + " 3 – sous forme de liste non triée" + " 4 – sous forme de liste triée"); Scanner clavier = new Scanner(System.in); choix = clavier.nextInt(); switch(choix){ ...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

3

Merci... Excusez-moi

4

Il faut que tu donnes le type de la variable choix lors de sa déclaration (comme tu l’as fait pour la variable clavier). [edit : je viens de voir que tu l’as fait, je ne regardais pas la bonne ligne. Donc ton pb vient du fait que le qualifieur de visibilité private n’a pas de sens à l’intérieur d’une fontion.]
Pour l’utiliser ailleurs que dans la fonction main, tu peux la transmettre en paramètre d’une fonction.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

je ne suis pas expert en java mais si tu veux que int choix = ClassePrincipale.main(String[]args);
fonctionne il faut peut être que ta déclaration de main renvoie autre chose que "void" d'une part et que args soit valorisé d'autre part...

(edit : cross avec sasume)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

6

Merci pour vos réponses. Je pense avoir régler le problème du main :

import java.util.Scanner;

public class ClassePrincipale {
	static int CH;	
	public static void main(String[]args){		
	
		System.out.println("Comment voulez-vous entrer vos notes ? Tapez " +
				"	1 – sous forme de tableau non trié" +
				"	2 – sous forme de tableau trié" +
				"	3 – sous forme de liste non triée" +
				"	4 – sous forme de liste triée");
		Scanner clavier = new Scanner(System.in);
		int choix = clavier.nextInt();
		
		switch(choix){
			case 1 :	CTabNotes Tab = new CTabNotes();
						Tab.affichage();
						break;
			case 2 :    CTabNotes Tabtrie = new CTabNotes();	
						Tabtrie.insertion_triee();
						Tabtrie.affichage();
						break;
			default :   System.out.println("Vous n'avez pas entré un des choix proposés");
						break;
		}
		CH=choix;
	}	
	public int getCH(){
		return CH;
	}

}


Il faudrait maintenant que je puisse récupérer CH dans la classe CListeNotes, j'essaye avec :

public class CTabNotes {
	private float [] tab;
	private int Nbcasesutil;
	private int i;
	private float val=1;
	int CH = new ClassePrincipale.getCH();
	
		public CTabNotes() {
			tab = new float[100];
			Nbcasesutil = 0;
		
			if (CH = 1){
				while(i<100 && val >=0){
					System.out.println("Saisir une note comprise entre 0 et 20 ou négative pour sortir :");
					Scanner clavier = new Scanner(System.in);
					val=clavier.nextFloat();
					if(val>=0 & val<=20){
						tab[i] = val;
						i++;
						Nbcasesutil++;
					}


mais je n'y arrive pas...

7

Pourquoi as-tu besoin de récupérer la variable CH ?
Pourquoi tu ne la fournis pas dans le constructeur de la classe CTabNotes ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

J'en ai besoin car en fonction du choix de l'utilisateur j'exécute une partie ou la totalité des instructions contenues dans le constructeur.

En tout cas merci pour votre attention, je trouve ça louable, il n'y en a pas beaucoup qui prenne le temps de regarder les problèmes des autres.

9

Ce que Sasume a essayé de t'expliquer, c'est qu'un constructeur peut prendre une valeur, genre public CTabNotes(int CH), en l'occurrence, c'est ce qu'il faut faire. smile
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

C'est bon j'ai trouvé la solution c'était tout bête. En tout cas merci pour vos réponses.

11

quel eté le pb finalement???