当前位置: 首页 > 知识库问答 >
问题:

简单的OOPS演示,坚持for循环的功能及其在main方法中的作用

洪涵亮
2023-03-14

关于这段代码的唯一信息是这个CreditCard类定义了模拟传统信用卡简化版本的信用卡对象。它们存储有关客户、发行银行、帐户标识符、信用额度和当前余额的信息。他们不收取利息或滞纳金,但他们限制会导致信用卡余额超过信用额度的费用。以下代码摘自《java中的数据结构和算法》一书:请帮助我了解for循环,它是:

for (int val = 1; val <= 16; val++) {  
     wallet[0].charge(3*val);
     wallet[1].charge(2*val);
     wallet[2].charge(val);
}

为什么充电方法有参数3val、2val和val。这个循环真正做什么?从以下代码:

package com.illustrations;

public class CreditCard{
    
    private String customer;
    private String bank;
    private String account;
    private int limit;
    protected double balance;

    public CreditCard(String customer, String bank, String account, int limit, double balance){     
        this.customer = customer;
        this.bank = bank;
        this.account = account;
        this.limit = limit;
        this.balance = balance;    
    }
    
    public CreditCard(String customer, String bank, String account, int limit) {
        this(customer, bank, account, limit, 0.0);
    }
    
    public String getCustomer(){ return customer; }
    public String getBank() { return bank; }
    public String getAccount() { return account; }
    public int getLimit() { return limit; }
    public double getBalance() { return balance; }

    public boolean charge(double price) {
        if(price + balance > limit)  
            return false;
        balance = balance + price; return true;
    }
    
    public void makePayment(double amount) {
        balance -=amount;
    }
     
    public static void printSummary(CreditCard card) {
        
        System.out.println("Customer ="+card.customer);
        System.out.println("Bank ="+card.bank);
        System.out.println("Account ="+card.account);
        System.out.println("Balance ="+card.balance);       
        System.out.println("Limit ="+card.limit);
    }
    
    public static void main(String[] args) {
        
         CreditCard[ ] wallet = new CreditCard[3];
         wallet[0] = new CreditCard("John Bowman", "California Savings", "5391 0375 9387 5309", 5000);
         wallet[1] = new CreditCard("John Bowman", "California Federal", "3485 0399 3395 1954", 3500);
         wallet[2] = new CreditCard("John Bowman", "California Finance", "5391 0375 9387 5309", 2500, 300);
        
         for (int val = 1; val <= 16; val++) {  
         wallet[0].charge(3*val);
         wallet[1].charge(2*val);
         wallet[2].charge(val);
         } 
         
         for (CreditCard card : wallet) {  
             CreditCard.printSummary(card); // calling static method
         
             while (card.getBalance() > 200.0) {  
                  card.makePayment(200);
                  System.out.println("New balance = " +card.getBalance());
             }
         
         }    
   }
}

共有1个答案

宋鸿
2023-03-14

我真的看不出有什么意义。事实上,定义了3种钱包——储蓄、联邦和金融,储蓄在剩下的两种钱包中信用额度最大。所以我们在3*val的for循环中做的是保持储蓄钱包中存钱的速度是金融钱包的三倍,因为它的限额要高得多。一旦达到限制,我们就不允许在钱包中添加更多的钱。

 类似资料:
  • 我正在编写一个 Java 程序。它应该打印出年终账户余额,今年投资,年度回报和年度数量。前任: 第一年-投资10000美元,投资额为10%,最终投资额为11000美元第二年-在现有11000美元的基础上再投资10000美元,现在你有21000美元,年回报率为2100美元,最终投资额为23100美元,持续投资6年。 我的代码打印了所有6年,但与第一年的值相同。循环有什么问题吗?非常感谢。这里我的代码

  • 本文向大家介绍jQuery的each循环用法简单示例,包括了jQuery的each循环用法简单示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery的each循环用法。分享给大家供大家参考,具体如下: 更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jquery中Ajax用法总结》、《jQuery表格(table)操作技巧汇总》、《jQuery拖拽特效与技巧总结》、《j

  • 本文向大家介绍C#中for循环、while循环循环执行的方法,包括了C#中for循环、while循环循环执行的方法的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下C#中的循环执行for循环 在这一节练习中,我们向大家介绍一下C#中的另一种重要的循环语句,for循环。 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:逻辑表达式,循环控制条件;当条件为真时,循环执行循环体中的语句。

  • 本文向大家介绍C++11的for循环,以及范围Range类的简单实现,包括了C++11的for循环,以及范围Range类的简单实现的使用技巧和注意事项,需要的朋友参考一下 C++11支持range-based for循环。这是一个很方便的特性,能省挺多代码。以下代码就能很方便的遍历vector中的元素,并打印出来: 可以遍历的对象包括: •数组。(不包括指针) •定义了begin()和end()方

  • 问题内容: 目前,我正在为Java测试学习。在学习期间,我遇到了一个小问题。 在此for循环中: 输出为: 我的问题是,我不了解。当我阅读这段代码时,我一直认为它应该看起来像这样: 为什么不是这样? 问题答案: i的每次迭代都将开始j的全新迭代。 因此,从i == 1开始,然后在循环中j == 1,2,3。然后i == 2,然后j == 1,2,3循环,依此类推。 一次一步地执行它,这将是有意义的

  • 问题内容: 这应该很简单,但是我真的很难做到正确。我需要的只是一个简单的ttk ComboBox,它可以在选择更改时更新变量。 在下面的示例中,我需要在每次进行新选择时自动更新变量的值。 问题答案: 只需将虚拟事件绑定到Combobox小部件: