gpt4 book ai didi

java - 变量可能未初始化错误和一般建议

转载 作者:行者123 更新时间:2023-11-30 04:27:34 25 4
gpt4 key购买 nike

我对这一切都非常陌生,这是我主修编程和网页设计的第一年。我在网上学习类(class),有时很难联系到我的教授。

无论如何,我已经从一个程序中编写了这段代码,该程序获取银行信息(帐号、帐户余额和帐户类型[储蓄或支票],计算利息和服务费并输出帐号和帐户余额。

我的主要问题是语法错误,指出我的变量“servCharge”可能尚未初始化。我已经检查过很多次了,但无法找出我做错了什么。

我相信你们大多数人都很容易发现这样的事情。对此的任何帮助以及有关如何清理代码的总体建议都会很有帮助,并且非常感谢!

这是我到目前为止所拥有的:

import java.util.*;

public class Unit5
{
static Scanner console = new Scanner(System.in);

public static void main(String[] args)
{

final double CHECKING_MIN_BAL = 25.00;
final double CHECKING_SFEE = 25.00;
final double MAX_CHECKING_INTR = .015;
final double MIN_CHECKING_INTR = .03;
final double SAVINGS_MIN_BAL = 500.00;
final double SAVINGS_SFEE = 10.00;
final double SAVINGS_INTR = .04;
final double FIVE_THOU = 5000.00;

String accountNumber;
String accountBal;
String accountType;
double accountBalDbl;
double interest;
double servCharge;
double accountBalFinal;

System.out.println("Bank");
System.out.println("Please enter a 10 digit "
+"account number or enter # to exit: ");
while (! ( accountNumber = console.next() ).equalsIgnoreCase( "#" ) )
{
if (accountNumber.matches("^[0-9]{10}"))
{
System.out.println();
}else{
System.out.println("Invalid account number!");
System.exit(0);
}

System.out.println("Please enter account balance: ");
accountBal = console.next();
{
if (accountBal.matches("^\\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(\\.[0-9][0-9])?$")) //adjust so it takes more numbers before decimal
{
System.out.println();
}else{
System.out.println("Invalid dollar amount!");
System.exit(0);
}

System.out.println("Please enter account type,"
+"C for checking or S for savings");
accountType = console.next();
{
if (accountType.matches("^[Ss | Cc]")) //look into this
{
System.out.println();
}else{
System.out.println("Invalid account type, please enter"
+"C or S");
System.exit(0);
}

accountBalDbl = Double.parseDouble(accountBal);
{
if (accountType == ("[Cc]"))
{
if (accountBalDbl < CHECKING_MIN_BAL)
servCharge = CHECKING_SFEE;
else
servCharge = 0.0;

if (accountBalDbl < CHECKING_MIN_BAL + FIVE_THOU)
interest = accountBalDbl * MIN_CHECKING_INTR;
}
}
{
if (accountType == ("S | s"))
{
if (accountBalDbl < SAVINGS_MIN_BAL)
servCharge = SAVINGS_SFEE;
interest = 0.0;
}else{
servCharge = 0.0;
interest = accountBalDbl * SAVINGS_INTR;
}
}
accountBalFinal = (accountBalDbl - servCharge) + interest;
System.out.println("Account Number: " + accountNumber);
System.out.println();
System.out.println("Current Balance: " + accountBalFinal);
System.out.println();
System.out.println("Please enter a 10 digit "
+"account number or enter # to exit: ");

}
}
}
}
}

最佳答案

您的格式有点难以解读,但您提到的错误与以下事实有关:您的代码中至少有一个分支没有为 servCharge 赋值。当您尝试这样做时,这是一个问题:

accountBalFinal = (accountBalDbl - servCharge) + interest;

确保您始终在所有分支中将 servCharge 设置为某个值,和/或确保在代码开头将其设置为默认值。像这样的东西:

servCharge = 0.0;

最大的问题是您最终可能会得到一个您不期望的 servCharge 值 (0.0)。检查所有 if/else 分支,并确保为每个分支中的 servCharge 分配适当的值。

关于java - 变量可能未初始化错误和一般建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15491073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com