2012-08-22 4 views
-4

Ok, donc je suis tout à fait nouveau à tout ce genre de choses de programmation Java, et ma connaissance, il est très peu, mais pour mon travail, je suis à:ayant des problèmes avec la programmation java et toString()

Créez une classe qui représente un rectangle. Un rectangle est spécifié par les coordonnées (x, y) de son coin en haut à gauche et sa largeur et hauteur. Cette classe sera utilisée pour créer de nombreux objets rectangle, et il doit posséder

  • champs dynamiques (variables) pour stocker x, y, la largeur et la hauteur sous forme de nombres fractionnaires;
  • un constructeur avec des paramètres qui fournissent x, y, la largeur et la hauteur;
  • une fonction qui renvoie la zone du rectangle;
  • une fonction qui renvoie la longueur du périmètre du rectangle; et
  • une fonction qui renvoie la représentation chaîne du rectangle, les quatre numéros, dans une paire de parenthèses, séparés par des virgules [cette fonction doit être nommé toString()]

écrire, dans une classe séparée, une méthode principale qui accepte les quatre nombres comme arguments de ligne de commande, instancie un objet rectangle, et imprime la représentation sous forme de chaîne du rectangle, de la zone et du périmètre .

donc en gros si cela fonctionne, il devrait ressembler à:

java TestRect 1 2 3 4
rectangle = (1.0, 2.0, 3.0, 4.0)
zone = 12,0
périmètre = 14.0

okay, désolé, pour avant, mais hum, après avoir lu vos réponses, j'ai fait quelques changements, je ne sais toujours pas si c'est ce que vous voulez dire, mais:

i ajouté

TestRect1 r = new TestRect1(); 

à TestRect (la classe principale)
fait les changements:

System.out.println("rectangle = " + r.toString()); 
    System.out.println("area  = " + r.area(w, h)); 
    System.out.println("perimeter = " + r.perimeter(w, h)); 

à TestRect1 (l'autre classe avec toutes les formules), et je me suis débarrassé de la "statique" des choses et a ajouté:

public double x; 
    public double y; 
    public double w; 
    public double h; 

donc quand i les compiler, les deux compilent, aucune erreur, mais quand il vient à l'exécution réelle du programme, où je tape

java TestRect 1 2 3 4 

l'erreur apparaît disant:

javac: invalid flag: 1 
usage: javac <options> <source files> 
use -help for a list of possible options 
+6

Quelle est votre question?Je vois des exigences, je vois du code et une vague demande d'aide, mais je ne vois pas de description bien réfléchie de ce qu'est exactement votre problème. S'il vous plaît envisager de prendre un peu de temps pour nous donner les détails de juste où votre coincé, exactement ce que votre code actuel fait mal, de quels concepts spécifiques vous confondez ... –

+0

ma question est de savoir comment résoudre la question? la question est la première partie .. où il dit toutes les choses sur le rectangle, et que vous avez besoin de classes la deuxième partie est le travail que j'ai fait, mais je suis maintenant coincé – user1615783

+2

Encore une fois, qu'est-ce que vous êtes coincé? Que fait votre code actuel? Qu'est-ce que ça ne fait pas? S'il vous plaît, aidez-nous à vous aider. Nous ne ferons pas vos devoirs pour vous, mais nous serons plus qu'heureux de clarifier les concepts afin que vous puissiez apprendre à résoudre cela vous-même, mais nous avons besoin de votre aide pour être capable de bien faire cela. Je vous demande de réfléchir à votre question et de mettre un peu d'effort dans la question. Faites cela et cela vous rapportera des dividendes à la fin. –

Répondre

0

Puisque vous essayez d'apprendre Java, je m'abstiendrais de poster le code complet. Permettez-moi plutôt de signaler les problèmes dans votre code.

  1. Vous n'avez pas suivi les deux premières instructions de votre spécification.

déclarer des variables de membre dans la classe de x, y, largeur et hauteur créer un constructeur qui prend ces 4 variables comme arguments, et attribue les membres du groupe pour les

  1. Toutes les méthodes dans la classe peut alors être déclaré non statique et ne pas avoir besoin d'arguments car ces variables sont stockées en tant que membres de la classe.
0

Votre classe TestRect1 manque un peu.

  • Il doit comporter quatre champs membres représentant x, y, largeur et hauteur.
  • La méthode toString() devrait être une méthode d'instance (pas une méthode static comme vous avez) et elle ne devrait pas prendre d'arguments. Il devrait construire la chaîne à partir des valeurs du champ.
  • Les méthodes area() et perimeter() devraient également être modifiées pour être des méthodes d'instance et pour ne prendre aucun paramètre.

Ensuite, votre méthode main() devrait être modifié pour construire un objet TestRect1 et utiliser ses méthodes et champs pour faire ce qu'il doit faire. Par exemple, une fois que vous avez un objet TestRect1, vous pouvez appeler sa méthode toString():

TestRect1 rect; 
// initialize rect 
System.out.println("rectangle = " + rect.toString()); 
1

Puisque c'est des devoirs que nous ne devrions pas vous donner la réponse complète. Vous avez évidemment appris ce qu'est une classe et ce qu'est une instance d'une classe.

Votre problème actuel est que vous ne créez pas réellement une instance d'une classe Rectangle. Ce que vous avez est une classe simple avec rien mais des méthodes statiques.

Alors comme un indice pour vous mettre sur la bonne voie:

Vous avez besoin d'une classe que vous pouvez créer une instance de comme ceci:

Rectangle rect = new Rectangle(x,y,width,height); 
0

Comme vous êtes un débutant donc je recommande que vous devriez essayer d'écrire avec le vôtre et si vous ressentez une requête, postez vos problèmes avec votre code pour qu'il soit facile à comprendre. Mais d'ailleurs, je ne poste que quelques parties de ma solution.
d'abord définir une classe appelée Rectangle dans cette classe écrire un constructeur et trois méthodes
1. area(width,height)
2. perimeter(width,height)
3. méthode @Override toString() et écrire comme ça.

public String toString() 
{ 
     return "("+x+","+y+","+width+","+height+")"; 
} 

Prenez argument de ligne de commande comme TestRect 1 2 3 4
Je recommande également de chercher des réponses précédentes. J'espère que cela vous aidera.

+0

Que sont 'len',' br'? – oldrinb

Questions connexes