首页 > 解决方案 > 需要帮助来解决问题……没有得到想要的输出。我想输入两个银行详细信息并希望输出相同的信息

问题描述

我是 Java 新手,开始学习自己的东西,但是我需要一些帮助来解决我面临的问题......让我知道我的代码哪里出了问题。

我的输出显示如下

Input -
Enter Bank Name: a
Enter Bank Account number: 1
Output - 
Bank Name: null
Bank Account Number: 0

为什么它不将银行名称显示为“a”,将帐号显示为“1”。请提供一些帮助。

//Bank.java

import java.util.Scanner;
class Bank
{
    String bank_name;
    int bank_account_number;

    void input_info()
    {
        Scanner input1 = new Scanner(System.in);
        System.out.print("Enter Bank Name: "); 
        String bank_name = input1.nextLine();

        Scanner input2 = new Scanner(System.in);
        System.out.print("Enter Bank Account number: ");
        int bank_account_number = input2.nextInt();
    }

    void display_info()
    {
        System.out.println("Bank Name: " +bank_name);
        System.out.println("Bank Account Number: " +bank_account_number);
    }
}

//Display_bank_details.java

class Display_bank_details
{
    public static void main (String args[])
    {
        Bank details1 = new Bank();
        Bank details2 = new Bank();

        details1.input_info();
        details2.input_info();

        details1.display_info();
        details2.display_info();
    }

}

标签: java

解决方案


主要问题是变量的范围。在您的input_info方法中,您有以下几行:

String bank_name = input1.nextLine();
...
int bank_account_number = input2.nextInt();

那些声明只存在于方法中的局部变量。相反,您希望为对象中的字段分配新值。这是一个简单的改变:

// Just assignments, not declarations
bank_name = input1.nextLine();
...
bank_account_number = input2.nextInt();

此外,我会:

  • 重命名变量和方法以遵循 Java 命名约定,例如inputInfodisplayInfo
  • 从变量中删除bank前缀 - 你已经在一个Bank类中,所以name应该accountNumber没问题(尽管后者建议它应该是 aBankAccount而不是 aBank
  • 创建一个对象 Scanner并将其作为参数传递给inputInfo方法,而不是为每一行输入创建一个新对象

推荐阅读