2016-10-27 3 views
0

Ich schreibe ein ziemlich einfaches Programm, nur um die Grundlagen zu lernen.
In diesem kann der Benutzer einen Haustierdrachen "erhöhen", also fragt er, welche Sorte der Benutzer wünscht und hilft mit Artnamen, wenn der Benutzer Hilfe wünscht, dann fragt er nach dem Namen.
Dann gibt es dem Drachen einen zufälligen Durstlevel.
Es funktionierte wie beabsichtigt, bis ich die if-Anweisung und die Spezies-Option hinzufügte.Java: Fehler, "variable species1 ist bereits in Methode name1() definiert"

Jetzt bekomme ich zwei Fehler, die ich nicht beheben kann:

Project.java:62: error: variable species1 is already defined in method name1()   default: String species1; 
          ^Project.java:74: error: cannot find symbol  System.out.println("Congratulations, " + name + " the " + species1 
+ " has been born!"); 
                   ^ symbol: variable species1 location: class Project 2 errors*** 

Jede Hilfe wird sehr geschätzt.

import java.util.Scanner; 
import java.util.Random; 

class Project { 



    public static void main(String[] args) { 

     intro(); 
     String s1 = name1(); 
     thirst(s1); 

     System.exit(0); 

    } 


//The following method explains what the program is for. 

    public static void intro() { 

     System.out.println("This program allows you to keep and raise a Dragon!"); 

     return; 
    } 




//The following method allows the user to name their pet Dragon and select its species. 

    public static String name1() { 

     Scanner dragonSpecies = new Scanner(System.in); 

     System.out.println("What species of Dragon would you like to raise? You may type 'help' to get a list of existing dragon species.");  

     String species = dragonSpecies.nextLine(); 


     switch(species) { 
      case "help": 
       System.out.println("Anglewing: The Anglewing is a smaller dragon with golden brown oddly angled wings and bright yellow spots."); 
       System.out.println(""); 
       System.out.println("Regal Copper: This heavyweight dragon exceeds all known breeds in sheer size (30–50 tons). Regal Coppers have vivid colorations ranging from red to yellow, and are very far-sighted."); 
       System.out.println(""); 
       System.out.println("Malachite Reapers: Cousins of the Yellow Reapers, with yellow-brown coloring with green highlights. Prefer the cooler climates of northern Scotland and mid-size."); 
       System.out.println(""); 
       System.out.println("Sharpspitter: A venomous breed considered too small for military use, that was cross-bred with the larger French Honneur-d'Or and the venomous Russian Ironwing to create the Longwings."); 
       System.out.println(""); 
       System.out.println("Chequered Nettle: As a heavyweight dragon, the Chequered Nettle is very useful in battle, as they possess spiked tails that can be used in a manner similar to morning stars. The colouring a Chequered Nettle is gold with brown stripes."); 
       System.out.println(""); 
       Scanner dragonSpecies1 = new Scanner(System.in);    
       System.out.println("What species of Dragon would you like to raise?"); 

       String species1 = dragonSpecies1.nextLine(); 
       break; 
      default: 
       String species1; 
       species1 = species; 
      break; 
     } 


     Scanner dragonName = new Scanner(System.in); 

     System.out.println("What Would you like to name your pet Dragon?"); 

     String name = dragonName.nextLine(); 

     System.out.println("Congratulations, " + name + " the " + species1 + " has been born!"); 

     return name; 
    } 



//The following method returns the thirst value of the dinosaur as a random number between 1 and 10 out of 10 

    public static void thirst(String name) { 

     Random thirst = new Random(); 


     int thirstLevel = thirst.nextInt(10) + 1; 

     System.out.println(name + "'s thirst level is " + thirstLevel + "/10"); 

     return; 
    } 

} 
+10

Ihre Codeformatierung ist ein Albtraum. – rmlan

+0

Verwenden Sie eine IDE? Es sollte hervorgehoben werden, welche Variablenreferenz falsch ist –

+0

wie in den Einrückungen? Ich habe vor einer Woche angefangen, von einem Kurs für Unbefangenheit zu lernen, ich arbeite daran. –

Antwort

0

Sie erklärt es zweimal:

 Scanner dragonSpecies1 = new Scanner(System.in);    
     System.out.println("What species of Dragon would you like to raise?"); 

     String species1 = dragonSpecies1.nextLine(); // <------------ HERE 
     break; 
     default: String species1; // <------------ AND HERE 
      species1 = species; 

Sie wirklich nicht, eine neue Variable hier brauchen und species wiederverwenden können. Sie sollten jedoch tatsächlich in einer anderen Situation ein neues benötigen, versuchen Sie so etwas wie

String species1; 
    switch(species) { 
     case "help": System.out.println("Anglewing: The Anglewing is a smaller dragon with golden brown oddly angled wings and bright yellow spots."); 
     System.out.println(""); 
     System.out.println("Regal Copper: This heavyweight dragon exceeds all known breeds in sheer size (30–50 tons). Regal Coppers have vivid colorations ranging from red to yellow, and are very far-sighted."); 
     ... 
     System.out.println(""); 
     Scanner dragonSpecies1 = new Scanner(System.in);    
     System.out.println("What species of Dragon would you like to raise?"); 

     species1 = dragonSpecies1.nextLine(); 
     break; 
    default: 
     species1 = species; 
     break; 
+0

lassen Sie ihn einfach wieder in 'species' eingeben. Die zusätzliche Variable ist hier ehrlich gesagt ganz unnötig. – SomeJavaGuy

+1

@BobyGandhi Bitte zeigen Sie Ihren Dank, indem Sie die Antworten mit dem Häkchen neben dem Beitrag akzeptieren. Kommentare sollten zur Klärung der Antworten verwendet werden –

1

Entfernen Sie die species1 Variable. Es ist unnötig. Ordnen Sie einfach den Wert species zu und verwenden Sie ihn.

Sie benötigen auch nur eine Scanner Variable, nicht eine pro Eingabeaufforderung.

Mit anderen Worten, den Standard Fall entfernen, setzen Sie diese Zeile in dem Hilfe-Fall

species = dragonSpecies.nextLine(); 

Und species verwenden, wenn Sie es und den Namen drucken.

Optional benennen Sie Ihre dragonSpecies zu input oder etwas und entfernen Sie die anderen Scanner Objekte. Dann verwenden alle Eingabeaufforderungen input.nextLine()

Verwandte Themen