java - 需要帮助来解决问题……没有得到想要的输出。我想输入两个银行详细信息并希望输出相同的信息
问题描述
我是 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();
}
}
解决方案
主要问题是变量的范围。在您的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 命名约定,例如
inputInfo
,displayInfo
- 从变量中删除
bank
前缀 - 你已经在一个Bank
类中,所以name
应该accountNumber
没问题(尽管后者建议它应该是 aBankAccount
而不是 aBank
- 创建一个对象
Scanner
并将其作为参数传递给inputInfo
方法,而不是为每一行输入创建一个新对象
推荐阅读
- python - 在 WTForms (Flask) 中使用单个类创建多个输入元素
- android - 在 MotionScene 期间在 textView 上添加可绘制对象
- python - 比较和切换字典中的键值
- extjs - 将变量传递给按钮的处理程序
- go - 在elasticsearch中查询最大日期
- html - 将文本字段的值与 Vuetify 中的工具提示内容同步
- r - 从语料库中删除 \\r\\n 不起作用
- javascript - 当 YouTube API iFrame 命中超过 75% 的视频时执行一次函数
- powerbi - RANKX 函数 DAX 的难点
- javascript - Mapbox - 从数据库中以自定义高度挤出 3D 建筑物?