java - 调用方法从 Scanner 获取变量并将其分配给新变量

标签 java java.util.scanner

我在方法调用方面遇到了困难,尤其是在与扫描仪一起使用时。

我得到了一小段代码;

import javax.swing.JOptionPane;
import java.util.Scanner;
import java.util.Calendar;    // for date calcs

public class UtilsMS {

// user input methods, by datatype ----------------------------------------

// get an int value
public static int readInt(String prompt) 
{
    // set up data and objects
    Scanner input = new Scanner(System.in);
    int data;

    // prompt for an input int value
    System.out.print(prompt);
    data = input.nextInt();       

    return data;
}

所以我进入我的主客户端 Java 代码并尝试;

public class AgeClientMS
{
    public static void main(String [] args)
    {   
        // Declarations
        int todayDate, todayCal;
        String getMonth = "Enter birth month: ";
        String getDay = "Enter birth day: ";
        String getYear = "Enter birth year: ";
        int data;

        // Methods

        UtilsMS.readInt(getMonth);
        UtilsMS.readInt(getDay);
        UtilsMS.readInt(getYear);

        //Outputs, Formatting, Display
    }
}

据我所知,我意识到我需要使用 UtilsMS 类中的扫描器获取 INT 值,然后重新为其分配另一个值,以便我可以将获取的每个值用于 future 的 SimpleDate 日期。 我只是不知道如何重新分配该值。

最佳答案

我想我明白你想做什么。基于您有一个今天日期的字段这一事实,我猜您也在尝试计算该人的年龄。所以我基本上在这段代码中回答了你的问题,并且还用它做了一些我认为你正在尝试做的其他事情。

import java.util.Calendar;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class AgeClientMS
{
    public static void main(String [] args)
    {   
        // Declarations
        int todayDate, todayCal;
        String getMonth = "Enter birth month: ";
        String getDay = "Enter birth day: ";
        String getYear = "Enter birth year: ";
        int data;

        // Methods

        // UtilsMS returns an integer value which we store in variables.
        int birthMonth = UtilsMS.readInt(getMonth);
        int birthDay = UtilsMS.readInt(getDay);
        int birthYear = UtilsMS.readInt(getYear);

        //Outputs, Formatting, Display 

        Calendar birthCalendar = Calendar.getInstance();
        birthCalendar.set(birthYear, birthMonth - 1, birthDay);

        Calendar todayCalendar = Calendar.getInstance();

        long ageInMilliseconds = todayCalendar.getTimeInMillis() - birthCalendar.getTimeInMillis();
        System.out.println("Age In Milliseconds: " + ageInMilliseconds);
        System.out.println("Age In Years: " + ((ageInMilliseconds / (24 * 60 * 60 * 1000)) / 365));


        SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
        try {
            Date birthDate = format.parse(birthMonth + "/" + birthDay + "/" + birthYear);
            System.out.println("You were born on: " + birthDate);


        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

关于java - 调用方法从 Scanner 获取变量并将其分配给新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737632/

相关文章:

java - 如何只从网上获取网页的一部分而不是下载整个页面

java - chalice : <g:layoutTitle> does not work

java - 不使用 .split() 或 StringTokenizer 在用户内容中查找单词

java - 从文件中输入的数组不正确

java - 在这种情况下如何使用 java-util-scanner 处理换行符?

java - 我在 Blackberry MAP 应用程序中遇到空指针异常

java - 对于 JSONObject 类型,keys() 未定义

java - 如何将 WebSEAL 安全上下文从 JSP/Servlet 传递到 EJB

java - Scanner.close() 的作用是什么?

java - 如何在 Java 8 中使用 CSV 值作为构造函数参数