2017-12-07 11 views
-5

내가 코드 블록을 실행할 수 없습니다 도와주세요 :문자 편지가 다음 코드를 실행 동일한 경우

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는 0부터 시작됩니다. 단일 문자 만 사용하는 경우 ab.charAt (0)를 사용해야합니다.

또 다른 좋은 조언은 소문자로 메서드 이름을 시작하고 camelCase 형식을 사용하는 것입니다.

+0

답을 고맙게 생각하지만 여전히 항상 똑같습니다. 출력은 동일합니다. –

+1

상금을 초기화했기 때문에 그게 맞습니다 ('가격'이 맞아야합니다). 거짓으로 초기화하면 원하는대로 할 수 있습니다. –

+0

고맙습니다. 너무 많이 여기에 새로 왔기 때문에 질문을하는 법을 아는 것이지만 미안하지만 많이 고마워요. –

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

fir은 사용자 문자열의 첫 번째 문자 있어야된다? 이 경우 0 기반 색인 생성을 고려해야합니다.

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

감사하지만 대답은 많이하지만 여전히 항상 동일하고 출력은 동일합니다 –

0

당신은 상태 여부를 그냥 거짓로 변경하는 경우 항상 사실 심지어 충족 남아 사실 같은 변수를 초기화했다.

하고 charAt(1)를 사용하여 문자열의 두번째 문자에 접근 한대로 지수는 0에서 시작하고 charAt(0)를 사용하려고하면 다음 첫번째 문자에 액세스합니다.

그냥 당신의 코드를 변경 : 당신이 더 문제가 무엇인지에 자세히 설명한다면 도움이 될 것이다

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) 일 수 있습니다.

사실 저는 다른 사용자가 상금 변수가 사실로 초기화되었다고 언급했습니다. 나는 그것이 문제이며 그 대답은 정확하다고 표시되어야한다고 믿는다.

+0

Czarking 나쁜 영어와 설명에 대해 유감스럽게 생각합니다. 실제 문제는 상금이 사실 일 경우에만 1000을 더하는 것으로 가정되었지만 원하는 결과를 얻지 못했습니다. 항상 1000을 추가합니다. –

+0

귀하의 의견에는 어떤 것들이 있습니까? 질문에 추가하십시오. – Czarking