2015-08-25 4 views
1

Мне нужно написать код для класса. Это следующие требования:Изменение переменных с использованием пользовательского ввода

Один класс должен быть контроллером с основным методом.

Другой класс должен:

  • сделать какое-то действие
  • пропуск в переменных
  • использование по крайней мере один, если заявление
  • имеют частные методы
  • есть некоторые методы получения и установки.

Я сделал большую часть этого. Я столкнулся с проблемой, когда я хочу, чтобы пользователь набрал «Go Forward», а затем для того, чтобы выносливость уменьшилась на пять и появилось сообщение в солоине, в котором говорилось: «Вы теряете 5 выносливости». Кроме того, я хотел бы, чтобы пользователь мог набирать «Rest», а для выносливости - на 5 (ограничение на 100, а для консоли можно сказать, «Выносливость увеличена до #».

Я не знаю Однако, когда я что-то пробовал, я получаю сообщение об ошибке.

Если у меня есть что-то, что мне не нужно, тогда скажите мне, что это такое и почему я должен удалите его. Если есть что-то общедоступное и не нужно, расскажите мне, почему этого не должно быть. Мой учитель говорит, что позже будет выведено 5 баллов за каждый раз, когда что-то открыто,

Введите код:

Controller Класс:

import java.io.*; 
import java.util.Scanner; 

public class Controller { 
    public static void main(String[] args){ 

    System.out.println("Type your name here:"); 
    Scanner scan = new Scanner(System.in); 
    String input = scan.nextLine();   
    Player playerOne = new Player(input); 
      playerOne.setStrength(78); 
      playerOne.setHealth(99); 
      playerOne.setStamina(67); 
      playerOne.printplayer(); 

      System.out.println("Type 'Go Forward' to move forward"); 
      Scanner mscan = new Scanner(System.in); 
      //mscan = movement scan 
      String minput = scan.nextLine(); 
       if(minput.equals("Go Forward")) 
        //minput = movement input 
        System.out.println("You lose 5 stamina."); 
        //Getting an error here : 'stamina cannot be resolved to a variable' 
        System.out.println("Stamina: " + stamina); 
       if(minput.equals("Rest")) 
       //Getting an error here : 'stamina cannot be resolved to a variable' 
        System.out.prinln("Stamina has been increased to " + stamina); 
        scan.close(); 
        } 
} 

А Класс игрока:

import java.util.Scanner; 

public class Player{ 

     public String name; 
     private String input; 
     private double health; 


     public double strength; 

     public double stamina; 

     //Player Name 
     public Player (String input){ 
      name = input; 
     } 

     //Player Health 
     public void setHealth(double playHp){ 
      health = playHp; 
     } 
     //Player Strength 
     public void setStrength(double playStrn){ 
      strength = playStrn; 
     } 
     //Player Stamina 
     public void setStamina(double playStam){ 
      stamina = playStam; 
     } 

     public void printplayer(){ 
      System.out.println("name : " + name); 
      System.out.println("Health :" + health); 
      System.out.println("Strength :" + strength); 
      System.out.println("Stamina :" + stamina); 

      } 

     private void reduceStamina() { 
      int stamina; 

     } 
    public int getStamina() { 

     return 0; 
    } 
} 

      System.out.println("Type 'Go Forward' to move forward"); 
      Scanner mscan = new Scanner(System.in); 
      //mscan = movement scan 
      String minput = scan.nextLine(); 
       if(minput.equals("Go Forward")) 
        //minput = movement input 
        System.out.println("You lose 5 stamina."); 
        //Getting an error here : 'stamina cannot be resolved to a variable' 
        System.out.println("Stamina: " + stamina); 
       if(minput.equals("Rest")) 
       //Getting an error here : 'stamina cannot be resolved to a variable' 
        System.out.prinln("Stamina has been increased to " + stamina); 
        scan.close(); 
        } 
} 
+0

'«. Я не знаю, как увеличить/уменьшить выносливость, хотя Когда я пытаюсь что-то, я получаю ошибку»' - Пожалуйста, покажите, что вы пробовали, и все сообщения об ошибках, которые это вызывает. Иначе мы не будем знать, что вы можете делать неправильно, или какие неправильные предположения вы могли бы сделать. –

+0

'stamina' - поле' Player', вы должны предоставить метод 'getStamina' в вашем классе' Player' и использовать 'playerOne.getStamina()', если вы хотите его отобразить. – MadProgrammer

+0

@MadProgrammer вы правы, но он поставил выносливость публике, чтобы не было похоже на общую проблему. Это неправильно, но это не приведет к ошибке, как он. – lacraig2

ответ

0

Объявите открытые методы, называемые getStamina, increaseStamina и decreaseStamina:

public int getStamina(){ 
    return stamina; 
} 

public void increaseStamina(int st){ 
    stamina+=st; 
} 

public void decreaseStamina(int st){ 
    stamina-=st; 
} 

Тогда в вашей программе делать что-то вроде :

Player player=new Player(); 
if(minput.equals("Go Forward")) 
    System.out.println("You lose 5 stamina.") 
    player.decreaseStamina(5); 
    System.out.println("Stamina: " + player.getStamina()); 
+0

Он является новым для кодирования, ваш ответ позволяет ему копировать и вставлять робота. – HungPV

+0

Люди никогда не роботы .. они всегда могут учиться .. – hermit

+0

Мой учитель учился как робот, у меня есть друг-робот. Так грустно. – HungPV

1

Чтобы использовать переменную в Java, вы должны сначала ее объявить. Пример вы хотели бы использовать целое число, вы должны объявить его

int mynumber = 1; //declare variable named mynumber and give it value is 1 

Вы пропустили о том, как объявить переменную, что сделать 2 ошибки я вижу в вашем коде 1. Многоразовый: Вы уже объявили сканер прежде чем вы сможете использовать его еще раз, не нужно объявлять еще один сканер с именем mscan 2. Объявите переменную: как я уже говорил, если вы хотите использовать переменную, вы должны сначала ее объявить. В вашем коде вы не указали переменную выносливости, чтобы не использовать ее. Вот почему вы получили ошибку

Выносливость не может быть разрешена переменной.

Если вы хотите уменьшить выносливость этого игрока, вы должны получить текущую выносливость, уменьшить его и установить его обратно Например:

double currentStamina = player.getStamina(); 
currentStamina = currentStamina - 5; // (or currentStamina-=5) decrease current stamina by 5 
player.setStamina(currentStamina); // set current stamina for player 

Далее я продолжу о вашем коде. Свойство объекта не должно быть объявлено как общедоступное (ваши поля 'name', 'strength', 'stamina'). Они должны быть частными, и вы можете получить/установить их значение с помощью методов get/set. Вы используете выносливость как переменную, но на нее не ссылаются (я сказал, что вы не объявляли ее раньше). Вы имели в виду поле выносливости класса Player? Так что, если вы хотите использовать поле другого объекта, вы должны использовать так: вместо

System.out.println("Current stamina is " + stamina); 

изменить его

System.out.println("Current stamina is " + player.stamina); 

Но не называют, как это, вы должны позвонить:

System.out.println("Current stamina is " + player.getStamina()); // don't directly access field of an object, please call get/set instead 

Далее: IF и ELSE IF Тебя получить открывающую и закрывающую brankets в вашем коде для if заявления. Если после вашего утверждения у вас нет открытых и закрытых страховок, он выполнит только 1 следующую строку в качестве действия для предыдущего условия. И вы должны научиться использовать ключевое слово else.

После всего прочего, ваш код должен быть:

String minput = scan.nextLine(); 
double currentStamina = player.getStamina(); 
if(minput.equals("Go Forward")) 
{ 
    currentStamina -= 5; 
    System.out.println("You lose 5 stamina."); 
    System.out.println("Stamina: " + currentStamina); 
} 
else if(minput.equals("Rest")) 
{ 
    currentStamina += 5; 
    System.out.prinln("Stamina has been increased to " + currentStamina); 
} 
player.setStamina(currentStamina); // update stamina value to player 
scan.close(); 
Смежные вопросы