Необходимо печатать строку только один раз в цикле for — простая банковская программа для начинающих

#java

#java

Вопрос:

Новичок в программировании. Я должен создать простую банковскую программу. Она отлично работает, если я превышаю баланс или остаюсь в пределах него. Если я сниму ровно столько, сколько осталось, она все равно будет работать и выведет оставшиеся суммы, которые не удалось вывести, но строку «Следующие запросы на получение кредита не удалось удовлетворить». не будет напечатано.

Если я помещу эту строку в последнюю инструкцию end if в цикле, она будет повторяться несколько раз столько раз, сколько осталось кредитов, мне нужно, чтобы она отображалась только один раз. Зашел в тупик, занимаюсь этим уже несколько часов и не могу найти решение. В целом это работает на 95%. Конец должен выглядеть как показано ниже. Ценю любую помощь

изображение конца

 public class Exercise2 {

public static void main (String[] args) {

    int loanRequests[] = {80,20,100,300,50,65,100,15};
    int balance = 500;
    String pot = "Cash in the pot: ";
    String request = "Loan amount requested: ";


    for (int i = 0; i < loanRequests.length; i  ) {
        if (balance >= loanRequests[i])  {
            System.out.println(pot   balance);               
            System.out.println(request   loanRequests[i]   " - Loan amount granted! "    "n");
            balance = (balance - loanRequests[i]);
       }else if (balance < loanRequests[i] amp;amp; balance > 0) {
           System.out.println(pot   balance   "n"   request   loanRequests[i]);
           System.out.println("The exact loan amount cannot be processed in full (insufficent funds available).");
           System.out.println("However we will give you what we can... "   balance);
           System.out.println("n"  pot   (balance - balance)   "n"    "n"   "The following amounts could not be facilitated");
           balance = 0;
       }else 
          System.out.println(loanRequests[i]);

        }
    }
  

}

Ответ №1:

Привет, чувак, я не уверен, понял ли я, что ты имел в виду. Но я предоставлю то, что, по моему мнению, является ответом на вашу проблему. Это выведет ваше сообщение «Следующие запросы на получение кредита не удалось выполнить». только один раз.

 public class Exercise2 {

  static String getRestLoanRequestsString(int index,int requests[]){
    StringBuilder builder = new StringBuilder(); //good practice to use StringBuilder when concating strings in loop
    builder.append("The following loan requests could not be facilitated:n");
    for(; index < requests.length;index  ){
        builder.append(requests[index])
                .append("n");
    }
    return builder.toString();
  }

public static void main (String[] args) {

    int loanRequests[] = {80,20,100,300,50,65,100,15};
    int balance = 500;
    String pot = "Cash in the pot: ";
    String request = "Loan amount requested: ";


    for (int i = 0; i < loanRequests.length; i  ) {
        if (balance >= loanRequests[i])  {
            System.out.println(pot   balance);               
            System.out.println(request   loanRequests[i]   " - Loan amount granted! "    "n");
            balance = (balance - loanRequests[i]);
       }else if (balance < loanRequests[i] amp;amp; balance > 0) {
           System.out.println(pot   balance   "n"   request   loanRequests[i]);
           System.out.println("The exact loan amount cannot be processed in full (insufficent funds available).");
           System.out.println("However we will give you what we can... "   balance);
           System.out.println("n"  pot   (balance - balance)   "n"    "n"   "The following amounts could not be facilitated");
           balance = 0;
        }else {
          System.out.println(getRestLoanRequestsString(i,loanRequests));
          break; //break the for loop because we don't have funds to give more loans
        }
    }
}
}
  

Комментарии:

1. привет, я действительно ценю ваши усилия .. это работает отлично. к сожалению, это слишком сложно для того, что ожидает мой преподаватель, мы сделали только очень простой материал, поэтому новый материал, который вы добавили, для меня двойной голландский 🙂 — большое спасибо, я попытаюсь расшифровать и извлечь из этого уроки

2. @javanoob123 вы могли бы избавиться от метода «getRestLoanRequestsString» и просто взять код метода и вставить его в оператор else, если хотите, я могу его отредактировать 🙂