- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的编程课做作业。我对发生的事情感到困惑。我的代码编译没有问题,但是当我运行它时,它什么也没做。我决定敲几次回车,还是没有。然后我输入“1”回车,四次后,程序运行时应该显示的菜单终于显示出来了。谁能帮我找出错误?
标题:
/*
+-----------------------------------+
| Fruit |
+-----------------------------------+
| -fruitName : String |
| -priceOfFruit : Double |
| -numberOfFruit : Integer |
| -numberSold : Integer |
+-----------------------------------+
| <<constructor>> |
| Fruit(name: String |
| price: Double |
| num : Integer) |
| <<constructor>> |
| Fruit(name: String) |
| <<constructor>> |
| Fruit() |
| +setFruitName(name : String) |
| +setPriceOfFruit(price : Double) |
| +setNumberOfFruit(num : Integer) |
| +setNumberSold(num : Integer) |
| +getFruitName() : String |
| +getPriceOfFruit() : Double |
| +getNumberOfFruit() : Integer |
| +getNumberSold() : Integer |
| +amountSold() : Double |
| +buy() : Boolean |
+-----------------------------------+
*/
#include <string>
using namespace std;
#ifndef FRUIT_H
#define FRUIT_H
class Fruit
{
private:
string fruitName;
double priceOfFruit;
int numberOfFruit;
int numberSold;
public:
Fruit(string name, double price, int num);
Fruit(string name);
Fruit();
void setFruitName(string name);
void setPriceOfFruit(double price);
void setNumberOfFruit(int num);
void setNumberSold(int num);
string getFruitName();
double getPriceOfFruit();
int getNumberOfFruit();
int getNumberSold();
double amountSold();
bool buy();
};
#endif
实现:
#include <iostream>
#include <iomanip>
#include <string>
#include "Fruit.h"
using namespace std;
Fruit::Fruit(string name, double price, int num)
{
fruitName = name;
priceOfFruit = price;
numberOfFruit = num;
numberSold = 0;
}
Fruit::Fruit(string name)
{
fruitName = name;
priceOfFruit = 0;
numberOfFruit = 0;
numberSold = 0;
}
Fruit::Fruit()
{
fruitName = "";
priceOfFruit = 0;
numberOfFruit = 0;
numberSold = 0;
}
void Fruit::setFruitName(string name)
{
fruitName = name;
}
void Fruit::setPriceOfFruit(double price)
{
if (price >= 0)
priceOfFruit = price;
else
while (price < 0)
cout << "\nThe price cannot be negative. Please try again: " << endl;
cin >> price;
if (price >= 0)
priceOfFruit = price;
}
void Fruit::setNumberOfFruit(int num)
{
if (num >= 0)
numberOfFruit = num;
else
while (num < 0)
cout << "\nThe number of fruit cannot be negative. Please try again: " << endl;
cin >> num;
if (num >= 0)
numberOfFruit = num;
}
string Fruit::getFruitName()
{
return fruitName;
}
double Fruit::getPriceOfFruit()
{
return priceOfFruit;
}
int Fruit::getNumberOfFruit()
{
return numberOfFruit;
}
int Fruit::getNumberSold()
{
return numberSold;
}
double Fruit::amountSold()
{
return numberSold * priceOfFruit;
}
bool Fruit::buy()
{
bool transaction;
int buying, available = 0;
numberOfFruit = available;
cout << "\n" << fruitName << " .......... " << "$"
<< setfill('0') << setw(4) << priceOfFruit
<< "\nPlease enter the number of "<< fruitName
<< "s to purchase: " << endl;
cin >> buying;
if (buying > available) {
transaction = false;
return transaction;
}
else {
numberOfFruit = available - buying;
numberSold = buying;
transaction = true;
return transaction;
}
}
主要内容:
#include <iostream>
#include <iomanip>
#include <string>
#include "Fruit.h"
using namespace std;
int main()
{
int selection = 5;
bool transaction;
double total;
Fruit apple("Apple", 1.99, 10);
Fruit banana("Banana");
Fruit orange;
banana.setPriceOfFruit(0.79);
banana.setNumberOfFruit(8);
orange.setFruitName("Orange");
orange.setPriceOfFruit(1.49);
orange.setNumberOfFruit(7);
do {
cout << " Fruit Stand "
<< "\n---------------"
<< "\n1. Buy Apple"
<< "\n2. Buy Banana"
<< "\n3. Buy Orange"
<< "\n4. Print Total"
<< "\n0. Quit"
<< "\nPlease make a selection: " << endl;
cin >> selection;
while (selection < 0 && selection > 4) {
cout << "\nSorry, that was an invalid selection."
<< "Please try again: " << endl;
cin >> selection;
}
if (selection == 1)
transaction = apple.buy();
else if (selection == 2)
transaction = banana.buy();
else if (selection == 3)
transaction = orange.buy();
else if (selection == 4)
cout << "Your current total is $" << setfill('0') << setw(4) << total << endl;
else
cout << "\nThank you for shopping at the Fruit Stand!" << endl;
if (transaction == true) {
cout << "\nThank you for your purchase!\n" << endl;
total = apple.amountSold() + banana.amountSold() + orange.amountSold();
}
else
cout << "\nSorry, out of stock.\n" << endl;
} while (selection != 0);
system("pause");
return 0;
}
最佳答案
这不是你所期望的:
void Fruit::setNumberOfFruit(int num)
{
if (num >= 0)
numberOfFruit = num;
else
while (num < 0)
cout << "\nThe number of fruit cannot be negative. Please try again: " << endl;
cin >> num;
if (num >= 0)
numberOfFruit = num;
}
请使用大括号 - 这是 C++,不是 python。现在,代码等同于:
void Fruit::setNumberOfFruit(int num)
{
if (num >= 0)
numberOfFruit = num;
else
while (num < 0)
cout << "\nThe number of fruit cannot be negative. Please try again: " << endl;
cin >> num;
if (num >= 0)
numberOfFruit = num;
}
这意味着当您在 main()
中调用 setNumberOfFruit()
时,它将总是尝试从 中读取一个数字标准输入
。将其更改为:
void Fruit::setNumberOfFruit(int num)
{
if (num >= 0)
numberOfFruit = num;
else {
while (num < 0) {
cout << "\nThe number of fruit cannot be negative. Please try again: " << endl;
cin >> num;
if (num >= 0)
numberOfFruit = num;
}
}
}
事实上,也许更好的选择是改为这样做:
void Fruit::setNumberOfFruit(int num)
{
while (num < 0) {
cout << "\nThe number of fruit cannot be negative. Please try again: " << endl;
cin >> num;
}
numberOfFruit = num;
}
或者,更好的是,如果 num
不在您期望的范围内,则抛出异常,并在 main()
或调用 setter 的任何地方处理该异常 -在我看来,在 setter 方法中做你正在做的事情并不是很好的设计。
关于c++ - 我的程序在运行时不会打印任何东西,在输入一些随机数后它会工作(有很多错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25696341/
有没有更好的方法用 PHP 将数据输出到 html 页面? 如果我想在 php 中用一些 var 制作一个 div,我会写类似的东西 print (''.$var.''); 或 echo "''.$v
我可以使用 java awt print 来打印文档/文件而不是使用 javax print 吗?我发现在 java awt print 中有一个选项可以使用 AttributedString 将内容
目前我通过以下方式运行 R 脚本: R --slave argument1 argument2 ... 我想知道 R 中关于如何退出脚本并发出警告的最佳实践,q() 会这样做吗? if(!file.
谁能告诉我如何编写一个程序,用 gcc 编译时打印 c ,用 g++ 编译时打印 c++? 最佳答案 #ifdef __cplusplus printf("c++\n"); #else
我需要支持在 KitKat 设备上打印,但我的目标 SDK 是 13(无法更改)。 特别是我需要打印一个 webview。 这是用于打印 webview 的 API: http://developer
我正在尝试创建一个简单的函数,其中 python 将根据您的年份输入计算年龄。我已经尝试了几种方法,但我没有运气 atm。 附:对不起,我是新手。 ame = input(" Enter your n
JavaFX 2.0 是否支持打印?我有一个文本区域,我从中获取文本然后我想打印它,但似乎没有这个功能。 当然,这里我说的是打印到打印机。 :) 最佳答案 尚不支持。作为一种解决方法,您可以使用 Ja
我试图找出printOn的重点。我查看了一些实现它的类,看起来它只是帮助打印不同数据类型的单位。这是准确的吗? 如果是这样,有人能指出我如何为我自己的类(class)实现这一点的正确方向吗?我将在可能
我无法让 IE 打印我的 Canvas (使用 excanvas 生成)...我使用的是最新版本的 excanvas。 http://dl.dropbox.com/u/997831/canvas.ht
我搜索了很多但没有人回答我的问题,我读到在这样的信号处理程序中使用 cout 是不安全的: void ctrlZHandler(int sig_num) { //SIGTSTP-18
我有兴趣打印一系列查询。我有以下代码。 start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764) end = datetime.datetime(201
public class javaClass { public static void main(String [] arg) { String row1 = "A____A"
我需要写入前一行的命令,例如不带\n 的 print()。 下面是一些示例代码: a=0 print("Random string value") if a==0: print_to_prev
我有一个使用 UIKit 和 Objective C 的旧 iOS 应用程序,我目前正在将其移植到 SwiftUI 和 Swift。一切都很顺利,我喜欢 Swift 和 SwiftUI。该应用程序已经
我创建了一个求和函数,它接受一个开始编号和一个结束编号,并返回这两点之间的总和答案 def print_sum_equations(start_number,end_number):
在 Perl 6 中,print 和有什么区别? , put和 say ? 我怎么看 print 5不同,但 put 5和 say 5看起来一样。 最佳答案 put $a就像 print $a.Str
我正在使用 here 中的 getOrgChart 库,我正在尝试打印整个图表,而不仅仅是可见部分。不幸的是,当使用标准库打印功能时,它只会打印出第一部分,而我不知道如何打印整个图表(该图表相当宽,大
我制作了一个非常适合 A4 页面的 View 。现在我想打印它。请注意,我没有使用drawRect或类似的东西,只是一个带有 subview 和文本标签的普通 View 。我的问题是,我对该 View
由于 Cocoa-Java 已弃用,我正在将 Cocoa-Java 代码迁移到 Cocoa + JNI。该代码打印存储在文件中的图像。新的 Cocoa 代码基本上是: NSImage *image =
这个问题已经有答案了: Printing a TDBGrid (4 个回答) 已关闭 6 年前。 如何在不安装或下载组件的情况下打印 DBGrid? 或者 如何将 DBGrid 的数据放入 RichE
我是一名优秀的程序员,十分优秀!