温柔,这是我第一次。 :)
这是损害:我是一个非主要的编程课程,到目前为止,我一直在做得很好。但后来有这个怪物。这个项目只是一个简单的银行程序,但我遇到了一些问题,要么永远循环,要么不知道char(s)。
到目前为止,这是我的代码;如果它看起来奇怪或者可能以非有效的方式完成,那是因为那是班级带我去的地方。仅供参考,下一课是关于阵列(不知道)。
import java.text.*;
import java.util.*;
/**
* Bank program
*
* @********
* @3
*/
public class Proj3also
{
public static void main(String []args)
{
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println("Welcome to the banking program.");
System.out.println("");
Scanner s = new Scanner(System.in);
System.out.print("Please enter your starting balance: ");
double bal = Double.parseDouble(s.nextLine());
System.out.print("");
double deposit;
double withdraw;
do
{ System.out.print("Enter (d)eposit, (w)ithdraw, (b)alance check, or (q)uit: ");
if (input == 'b' || input == 'B')
{
System.out.print("Your balance is: $");
System.out.println(df.format(bal));
System.out.println("");
}
else if (input == 'd' || input == 'D')
{
System.out.print("Enter the amount to deposit: ");
deposit = Double.parseDouble(s.nextLine());
bal = bal + deposit;
System.out.println("");
}
else if (input == 'q' || input == 'Q')
{
System.out.print("");
System.out.print("Exiting the banking program. Goodbye!");
}
else if (input == 'w' || input == 'W')
{
System.out.print("Enter the amount to withdraw: ");
withdraw = Double.parseDouble(s.nextLine());
if (withdraw > bal)
{
System.out.println("Transaction failed. Withdraw amount cannot exceed balance.");
System.out.println("");
}
else
{
bal = bal - withdraw;
System.out.println("");
}
}
}
while(input != 'q' || input != 'Q');
}
}
这就是教师程序的样子:
http://i15.photobucket.com/albums/a376/decode_6/project3.png
非常感谢任何帮助!
答案 0 :(得分:1)
你的while循环是无限的,因为它的条件总是正确的:
while(input != 'q' || input != 'Q');
如果input == 'q'
,那么input != 'Q'
,表达式的计算结果为true,反之亦然。
你的循环永远不会终止。您需要将||
更改为&&
,以使条件在逻辑上正确。
答案 1 :(得分:0)
欢迎来到stackoverflow我的朋友!
您是否尝试将'或'语句(||)更改为'和'(&&) - >虽然它不等于'q'而不等于'Q',继续。您当前的陈述将永远是真实的,因为它不能同时存在。
即。改为 - > while(输入!='q'&& input!='Q');
我找不到一个在线Java转换器来测试这个理论,所以让我知道这是不对的,我会删除帖子。
在某些时候,每个人都会被Ifs和Ands抓住。