Как рассчитать разницу текущего года и года рождения - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть проект в моем классе программирования, где я должен определить возраст кого-либо, взяв текущий год и вычтя год его рождения.Тем не менее, когда я писал код, он продолжал давать мне ответ «50.0minus50.0 = 0.0».

import java.util.Scanner;

public class ageMath {
    String firstName;
    static int currentYear;
    static int birthYear;
    double mathEquation;'

    Scanner lookAtKeyboard = new Scanner(System.in);

    public void getFirstName() {
        System.out.println("What is your first name");
        firstName = lookAtKeyboard.nextLine();
    }

    public void getCurrentYear() {
        System.out.println("What is the current year");
        currentYear = lookAtKeyboard.nextLine().charAt(0);
    }

    public void getBirthYear() {
        System.out.println("What is your birth year");
        birthYear = lookAtKeyboard.nextLine().charAt(0);
    }

    public void doMath(double birthYear, double currentYear) {
        mathEquation = currentYear - birthYear;
        System.out.println(currentYear +"minus"+ birthYear + "=" + mathEquation);
    }

    public static void main (String[] args) {
        ageMath calculator = new ageMath();
        calculator.getFirstName();
        calculator.getCurrentYear();
        calculator.getBirthYear();
        calculator.doMath(currentYear,birthYear);
    }
}

Что я должен сделать, чтобы это исправить?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2019

Для int вы должны использовать nextInt(). Метод java string charAt() возвращает char value с указанным индексным номером. Что не подходит для вашего текущего сценария.

 import java.util.Scanner;

class Main {




String firstName;

static int currentYear;

static int birthYear;

double mathEquation;

Scanner lookAtKeyboard = new Scanner(System.in);


public void getFirstName()
{
System.out.println("What is your first name");
firstName =lookAtKeyboard.nextLine();
}

public  void getCurrentYear() {
System.out.println("What is the current year");
currentYear =lookAtKeyboard.nextInt();
}

public  void getBirthYear() {
System.out.println("What is your birth year");
birthYear =lookAtKeyboard.nextInt();
}

public void doMath(double birthYear, double currentYear) {
mathEquation = currentYear - birthYear;
System.out.println(currentYear +"minus"+ birthYear + "=" +mathEquation);

}



public static void main (String[] args) {

Main calculator = new Main();
calculator.getFirstName();
calculator.getCurrentYear();
calculator.getBirthYear();
calculator.doMath( currentYear,birthYear);

}


}

Работа ссылка (я только что изменил имя класса, чтобы оно могло работать на скрипке)

1 голос
/ 29 сентября 2019

char(0) возвращает значение ascii '2', поскольку вы, вероятно, ввели 2019 как текущий год.

См. ASCII tabel

Если вы хотитетакое же поведение ввода (пользователь нажимает ввод после каждого ввода) вы можете прочитать ввод как строку и проанализировать его как int:

public void getCurrentYear() {
    System.out.println("What is the current year");
    currentYear = Integer.parseInt(lookAtKeyboard.nextLine());
}

public void getBirthYear() {
    System.out.println("What is your birth year");
    birthYear = Integer.parseInt(lookAtKeyboard.nextLine());
}

(пожалуйста, посмотрите также мой комментарий относительно порядка параметров при вызове doMathв основном методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...