Невозможно использовать массивы или циклы foreach для перебора списка данных и вывода только определенных значений. - PullRequest
0 голосов
/ 12 марта 2012

Подсказка: Программа, которая принимает название конфеты (например, «голубика в шоколаде»), цену за фунт и количество фунтов, проданных в среднем месяце, и отображает данные товара, только если он является бестселлером. Бестселлерами являются те, которые продают более 2000 фунтов в месяц. б. Программа, которая непрерывно принимает данные о конфетах до тех пор, пока не будет введено дозорное значение, и покажет список самых продаваемых и дорогих товаров. Бестселлеры определены в упражнении 2а. К дорогим предметам относятся те, которые продаются по 10 долларов за фунт или более.

Вот пример хорошего дизайна в действии:

High-priced, Best-selling Candy
Fudge $12.50 4500 lbs
Vanilla Creme $13.75 2200 lbs.
Fudge, 12.50, 4500 Jawbreakers, 6.50, 5500 Chocolate, 14.00, 790 Butterscotch, 9.50, 4500 Vanilla Creme, 13.75, 2200
Item that sold most pounds: Jawbreakers

но проблема в том, что мой учитель не позволяет мне использовать циклы или массивы. И я не хочу определять несколько экземпляров одной и той же переменной, потому что она конечна до некоторой суммы .... Какой самый эффективный способ сделать это?

 start

    // Declarations
    num QUIT = "Y";
    final String HEADING = "High Priced, Best Selling Candy" + "\n" + "\n";
    final String HSPS = candyName + " " + candyPrice + " " + candySold + " ";
    final String MOSTSOLD  = "Item that sold the most pounds is "

  while <> QUIT;
  enterCandy();
  printHighPriceBestSelling();
  printSoldMostPounds();
  endwhile;

  stop

entercandy()
  String candyName = "poop";
  double candyPrice = 0.0;
  double candyWeight = 0.0;
  int candySold = 0;
  output "Please enter name of candy.";
  input candyName;
  output "Please enter candy price.";
  input candyPrice;
  output "Please enter pounds sold.";
  input candySold;

printHighPriceBestSelling()
  if(candySold > 2000 && candyPrice > 10)
  {
    output HEADING;
    output HSPS;
  }
  else
  {
    output "There were/are no best selling, high priced candy!"
  }

  printSoldMostPounds();

 //There is no basis for comparison. 

Есть только два способа сделать это. Создайте множество различных, произвольных и предопределенных переменных, которые будут заполнены циклом, пока они не будут перезаписаны. Скажем 10. Или создайте массив. Я уверен, что есть слишком сложный способ сделать это с помощью вложенных циклов if / switch / while, но зачем учить нас / заставлять нас использовать уродливый неэффективный способ?

    output "MOSTSOLD ";

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

Из описания проблемы я не вижу необходимости хранить введенные данные, чтобы их можно было отсортировать.И a, и b устанавливают простые условия для отображения конфет: более 2000 фунтов и не менее 10 долларов за фунт.Вы можете распечатать каждую запись сразу же после ее ввода.

Однако ваш пример вывода подразумевает, что вы должны выбрать один бестселлер, который противоречит описанию.Что правильно?

0 голосов
/ 12 марта 2012

Я предполагаю, что, кроме массивов, ваш учитель не позволяет вам использовать какие-либо стандартные объекты Коллекции.

Вы всегда можете просто создать свой собственный LinkedList из введенных заказов на конфеты - это ужасно, но это сработает. Одно «звено» в цепочке будет выглядеть так:

public class CandyOrderLink {
private String candyName;
private Double candyPrice;
private Double orderAmount;
private CandyOrderLink nextOrderLink;

public CandyOrderLink(String candyName, Double candyPrice, Double orderAmount) {
    this.candyName = candyName;
    this.candyPrice = candyPrice;
    this.orderAmount = orderAmount;
}

public CandyOrderLink getNextLink() {
    return nextOrder;
}

public void setNextLink(CandyOrderLink nextOrderLink) {
    this.nextOrderLink= nextOrderLink;
}

public String getCandyName() {
    return candyName;
}
public Double getCandyPrice() {
    return candyPrice;
}
public Double getOrderAmount() {
    return orderAmount;
}
}

Не уверен, правильно ли я понимаю точку назначения, но использование структуры данных списка для отслеживания всех заказов будет работать. Просто создайте ссылку для каждой записи (candyName, цена, сумма) и установите эту ссылку в качестве следующей ссылки предыдущей. В конце ввода повторяйте список, многократно вызывая getNextLink () для каждой ссылки и печатая информацию (при необходимости). Вот статья Википедии о связанных списках: http://en.wikipedia.org/wiki/Linked_list

...