2017-12-07 2 views
-5

Bitte helft mir nicht diesen Block von Code ausführen kann:wenn char gleich ein Brief ausführt dann einen Code

import java.util.Scanner; 

public class Methods_in_java { 

    public static void main(String[] args) { 
     boolean gameover = true; 
     int score = 5000; 
     int Levelcomplete = 5; 
     int bonus = 100; 
     boolean prize = true; 
     System.out.println("Please enter your name"); 
     Scanner lic = new Scanner(System.in); 
     String ab = lic.nextLine(); 
     char fir = Character.toUpperCase(ab.charAt(1)); 
     if(fir == 'A'){ 
       prize = true; 
     } 
     Calculatescore(gameover,score,Levelcomplete,bonus,prize); 
    } 
    public static void Calculatescore(boolean gameover,int score,int levelcomplete,int bonus,boolean prize){ 
     if(gameover){ 
      int finalscore = score + (levelcomplete * bonus); 
      if (prize){ 
       finalscore += 1000; 
      } 
      System.out.println("Your final score is "+ finalscore); 
     } 
    } 
} 
+4

"Ich kann diesen Code nicht ausführen" Warum? – tkausl

+0

Welcher? 'Calculatecore' oder das ganze Haupt? – Shirkam

+4

Willkommen bei Stack Overflow! Bitte erläutern Sie, warum Sie Ihren Code nicht "ausführen" können: Haben Sie einen Kompilierungsfehler? ein Laufzeitfehler? Ist die Ausgabe nicht das, was Sie erwartet haben? zusammen mit den relevanten Nachrichten, eine Beschreibung dessen, was Sie erreichen wollen, und konkrete Beispiele mit Daten und gewünschtem Ergebnis. – Pac0

Antwort

2

charAt ist nullbasiert. Sie sollten ab.charAt (0) verwenden, wenn Sie nur ein einzelnes Zeichen verwenden.

Ein weiterer guter Rat ist, Methodennamen mit einem Kleinbuchstaben zu starten und das CamelCase-Format zu verwenden.

+0

Vielen Dank für die Antwort, aber immer noch ist es gleich wahr und die Ausgabe ist gleich –

+1

Das ist, weil Sie Preis (die 'Preis' zu wahren sein soll) initialisiert. Initialisiere es als falsch und es wird tun, was du willst :) –

+0

Vielen Dank, ich bin neu hier, also weiß ich nicht, wie man Fragen stellt, sorry, aber vielen Dank –

1
String ab = lic.nextLine(); 
char fir = Character.toUpperCase(ab.charAt(1)); 

Ist fir sollte das erste Zeichen in dem Benutzer String sein? In diesem Fall sollten Sie sicherstellen, dass die nullbasierte Indizierung berücksichtigt wird:

char fir = Character.toUpperCase(ab.charAt(0)); 
+0

Vielen Dank für die Antwort aber immer noch gleich wahr und die Ausgabe ist gleich –

0

Sie haben Ihre Preis Variable als wahr initialisiert, die immer wahr auch seine treffen, wenn die Bedingung oder nicht einfach ändern, um falsch bleiben.

und wie Sie die Zeichenfolge des 2. Zeichen mit charAt(1) zugriffen, die Index beginnt bei 0 und wenn Sie mit charAt(0) versuchen dann werden Sie erste Zeichen zugreifen.

einfach Ihren Code ändern:

public class cn { 

    public static void main(String[] args) { 
     boolean gameover = true; 
     int score = 5000; 
     int Levelcomplete = 5; 
     int bonus = 100; 
     boolean prize=false; 
     System.out.println("Please enter your name"); 
     Scanner lic = new Scanner(System.in); 
     String ab = lic.nextLine(); 
     char fir = Character.toUpperCase(ab.charAt(0)); 
     if(fir == 'A'){ 
       prize = true; 
     } 
     Calculatescore(gameover,score,Levelcomplete,bonus,prize); 
    } 
    public static void Calculatescore(boolean gameover,int score,int levelcomplete,int bonus,boolean prize){ 
     if(gameover){ 
      int finalscore = score + (levelcomplete * bonus); 
      if (prize){ 
       finalscore += 1000; 
      } 
      System.out.println("Your final score is "+ finalscore); 
     } 
    } 
} 
+0

danke Lalit –

+0

Willkommen @AdityaRajTiwari, wenn Sie meinen Beitrag hilfreich fanden als Sie können meine Antwort oder andere akzeptieren, wenn Sie andere besser –

0

Es wäre hilfreich, wenn Sie mehr auf ausgearbeitet, was dein Problem ist, haben Sie einen Laufzeitfehler, eine Kompilierung Fehler, oder es den Ausgang nur nicht was du erwartest.
Ihr Problem kann sein, dass Arrays bei 0 beginnen, so dass der erste Buchstabe charAt (0) ist.

Eigentlich glaube ich ein anderer Benutzer erwähnt, dass die Preisvariable auf True initialisiert wurde. Ich glaube, das ist das Problem, und diese Antwort sollte als richtig gewertet werden.

+0

Dank Czarking Entschuldigung für schlechtes Englisch und Erklärung das wahre Problem war nicht gewünschte Ausgabe, die 1000 nur hinzufügen sollte, wenn der Preis war wahr, aber es fügt immer 1000 –

+0

Was sind einige Beispiele für Ihre Eingaben? füge sie zu deiner Frage hinzu – Czarking

Verwandte Themen