2017-12-07 9 views
-5

を実行し、私はこのコードのブロックを実行することはできません助けてください:charが文字に等しい場合は、コード

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

"このコードブロックを実行できません"なぜですか? – tkausl

+0

どちらですか? 'Calculatescore'またはメイン全体? – Shirkam

+4

スタックオーバーフローへようこそ!なぜコードを実行できないのか説明してください:コンパイルエラーがありますか?ランタイムエラー?出力は期待どおりではありませんか?関連するメッセージ、達成したいことの説明、データと希望の結果を持つ具体的な例が表示されます。 – Pac0

答えて

2

charAtはゼロベースです。 1つのcharだけを使用する場合は、ab.charAt(0)を使用する必要があります。

もう1つの良いアドバイスは、メソッド名を小文字で開始し、camelCase形式を使用することです。

+0

答えにはありがとうございますが、それでも常に真であり、出力は同じです –

+1

これはあなたが賞品を初期化したからです(これは本当に「価格」でなければなりません)。偽としてそれを初期化し、あなたが望むことをします:) –

+0

ありがとうございます私はここに新しいですので、私は質問をする方法を知っているが残念だが、多くのありがとう –

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

firは、ユーザーの文字列の最初の文字することになっていますか?その場合は、ゼロベースのインデックス作成を考慮に入れてください。

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

ありがとうまだそれは常に真であり、出力は同じです –

0

あなたは状態かどうかだけでにそれを変更した場合、常にでもその出会い残るとしてご変数を初期化してきました。

、あなたがcharAt(1)を使用して文字列の2文字目にアクセスしていたとして、インデックスは0から始まり、あなたがcharAt(0)を使用してみた場合、あなたは1文字目にアクセスします。

だけにコードを変更:ちょうど出力を使用すると、実行時エラー、コンパイル時のエラーを持っているん 、あなたはあなたの問題が何であるかにより精緻場合には参考になる

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

ありがとうLalit –

+0

私の記事が役立ったと思う場合はようこそ@AdityaRajTiwariあなたが他のものを見つけたら私の答えや他のものを受け入れることができるよりも –

0

、またはそれあなたが期待するものではありません。
配列が0から始まるので、最初の文字がcharAt(0)になることがあります。

実際、私は、賞金変数がtrueに初期化されたと他のユーザーが言いました。私はそれが問題であり、その答えは正しいと考えられるべきだと思います。

+0

Czarking悪い​​英語と申し訳ありません本当の問題は賞が当てはまる場合にのみ1000を追加することになっていた望ましい出力を得ていなかったありがとうございました1000 –

+0

あなたの入力の例は何ですか?あなたの質問にそれらを追加してください – Czarking

関連する問題