2010-09-23 7 views
0

Voici mon code mis à jour:application Java n'affiche pas sortie

package car1; 

public class principal {

public static void main (String [] args) {

classe hondacivic implémente voiture1 {

int speed = 0; 
int rpm = 0; 
int gear = 1; 

public void speedUp(int Increment) { 
    speed = speed + Increment;} 

public void applyBrakes(int Decrement) { 
    speed = speed - Decrement;} 

public void changeRpm(int NewValue) { 
    rpm = NewValue;} 

public void changeGear(int NewValue) { 
    gear = NewValue;} 

public void printStates() { 
    System.out.println("speed:"+speed+" rpm:"+rpm+" gear:"+gear);} 

}

class CarDemo{ 
public void main(String[] args) { 
    // Two different Cars 
    HondaCivic car1 = new HondaCivic(); 
    HondaCivic car2 = new HondaCivic(); 
    // Methods for cars 
    car1.speedUp(30); 
    car1.changeGear(3); 
    car1.changeRpm(3000); 
    car1.applyBrakes(15); 
    car1.printStates(); 

    car2.speedUp(30); 
    car2.changeGear(3); 
    car2.changeRpm(2000); 
    car2.applyBrakes(15); 
    car2.speedUp(5); 
    car2.changeGear(1); 
    car2.printStates(); 
} 

}} }

L'application ne sera pas afficher la sortie. Je n'ai aucune idée de ce qu'il faut faire. Aucun conseil?

Répondre

3

Java, comme la plupart des langages de programmation, est sensible à la casse. Class n'est pas la même chose que class.

+0

J'ai ajouté cela et j'ai toujours eu deux erreurs: atteint la fin du fichier pendant l'analyse et la compilation a échoué; voir la sortie d'erreur du compilateur pour plus de détails. BUILD FAILED (temps total: 0 seconde) – Arcadia

+0

Il semble qu'il vous manque un caractère '}' à la fin de la classe 'CarDemo'. C'est pourquoi vous devriez adopter un style d'indentation cohérent plutôt que l'aléatoire que vous utilisez ci-dessus. Il aurait été évident que cette classe n'était pas fermée si vous aviez correctement indenté 'main'. –

+0

Mon code a été mis à jour – Arcadia

0

Je peux repérer plusieurs problèmes, dont certains d'entre vous avez peut-être déjà fixés:

  1. Class a besoin d'être class (minuscules) dans la définition de la deuxième classe.
  2. Car n'est pas une interface, vous devez donc extend plutôt que de l'implémenter.
  3. HondaCivic n'est pas abstrait ou une interface, il doit donc avoir des corps de méthode pour chacune de ses méthodes; alternativement, laissez les méthodes hors de HondaCivic, auquel cas les méthodes de Car seront employées à la place.

Dans votre mise en page de classe actuelle, il serait beaucoup plus logique si fait un objet Honda Civic plutôt que d'une classe, car il n'a pas de nouvelles fonctionnalités:

Car hondaCivic = new Car(); 
1

Java est sensible à la casse:

Class HondaCivic implements Car { 

est pas la même que la syntaxe juridique:

class HondaCivic implements Car { 
+0

Correction de deux erreurs et obtention de ces dernières: atteinte de la fin du fichier lors de l'analyse syntaxique et échec de la compilation; voir la sortie d'erreur du compilateur pour plus de détails. BUILD FAILED (temps total: 0 secondes) – Arcadia

1

Une interface doit implémenter toutes les méthodes de son parent. Vous implémentez tout sauf pour

printStates() 

De même, vérifiez la sensibilité à la casse de votre déclaration de classe.

modifier: NVM sa non déclarée comme abstraite

+0

J'ai ajouté cela et j'ai toujours eu deux erreurs: atteint la fin du fichier lors de l'analyse } et Compile échoué; voir la sortie d'erreur du compilateur pour plus de détails. BUILD FAILED (temps total: 0 secondes) – Arcadia

+0

pouvez-vous poster votre code mis à jour? – Scott

+0

Oui, le code est mis à jour avec les nouvelles erreurs im get – Arcadia

0

code Vous a beaucoup de questions.

d'abord faire Car une interface comme interface Car

deuxième mouvement tout le code de HondaCivic à Car et tout le code de Car à HondaCivic dire, échanger le code parce que l'interface ne peut avoir des déclarations de méthodes et variables et non mise en œuvre.La classe implémentant l'interface doit fournir l'implémentation de TOUTES ces méthodes.

Enfin dans la principale méthode écrire ce code au lieu de ce que vous avez pour faire des instances de voiture

Car car1 = new HondaCivic(); 
Car car2 = new HondaCivic(); 

Ensuite, il compiler et exécuter.

+0

J'ai édité mon premier message. J'ai essayé de faire ce que tu as dit mais je ne peux pas vraiment le comprendre. HondaCivic n'est pas nécessaire pour que mon code fonctionne, je l'ai seulement mis là parce que je pensais que je devais l'implémenter dans l'interface ou quelque chose comme ça. – Arcadia

+1

Une classe doit avoir le corps de méthode de toutes ses méthodes. Si vous n'avez pas le corps de la méthode, vous devrez déclarer la méthode comme abstraite et, par conséquent, déclarer également la classe comme abstraite. De même, vous ne pouvez pas créer d'objets d'une classe abstraite. Donc, si tout ce que vous essayez de faire est d'avoir une classe et de créer ses objets et d'en appeler certaines méthodes, vous n'avez pas à déclarer d'interface. Faites juste une classe, assurez-vous que toutes les méthodes ont leur corps et votre code fonctionnera bien. –

+0

D'accord j'ai eu le code pour compiler enfin sans erreurs. L'un des principaux problèmes n'était pas d'ajouter du public avant les méthodes. J'ai oublié que vous ne pouvez pas compiler des méthodes d'interface qui ne sont pas publiques. Cependant, quand je vais exécuter l'application, il est dit: java.lang.NoClassDefFoundError: car/Main Causée par: java.lang.ClassNotFoundException: car.Main Impossible de trouver la classe principale: car.Main. Le programme va sortir. Exception dans le fil "principal" Java Résultat: 1 BUILD SUCCESSFUL (temps total: 0 secondes) Pourquoi dit-il cela ?? – Arcadia