- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在大学学习计算机编程类(class)的第一年,并且被困在作业的这一部分(老师也到处都是,很难得到澄清)。我们正在制作的这个程序是为了让运输公司确定哪个包裹最便宜。我们采用两个包装的 3 个变量(长x宽x高)并计算体积和成本。但接下来我们应该有关于哪一个更好地使用体积的陈述?这是问题
**程序必须使用数量差异计算成本差异,并给出以下内容(按优先级顺序):
我尝试了一些使用卷并比较它们的 if 语句,然后厌倦了成本并将两个包与成本进行比较,但没有得到结果。
if (package1.calcVolume()==package2.calcVolume()){
System.out.println("The cost of both packages are the same.");
}
else if (Math.max(package1.calcVolume(), package2.calcVolume()) == package1.calcVolume()){
if (package1.calcVolume()<=(2*package2.calcVolume())){
System.out.println("The cost of package 1 is slightly more.");
}
else if (package1.calcVolume()<=(3*package2.calcVolume())){
System.out.println("The cost of package 1 is two times more.");
}
else if (package1.calcVolume()<=(4*package2.calcVolume())){
System.out.println("The cost of package 1 is three times more.");
}
}
else if (Math.max(package1.calcVolume(), package2.calcVolume())== package2.calcVolume()) {
System.out.println("Package 2 is more."); //Place holder for now
}
当包裹 1 输入 2,2,2 作为长x宽x高,包裹 2 输入 1,1,1 时,我们应该得到“第一个包裹是三倍多”。
我没有得到“两次”和“四倍”,并且使用此代码我认为我没有收到任何东西。
最佳答案
每次执行诸如 package1.calcVolume()
或 package2.calcVolume()
之类的操作时,您本质上都是在调用 calcVolume() Package 类中的方法。看起来可能并非如此,但这非常耗时,更不用说一遍又一遍地进行不必要的处理。执行一次:
double p1 = package1.calcVolume();
double p2 = package2.calcVolume();
是的,它应该是 double (或浮点)数据类型,以便正确获取成本的略少部分,因此如果还没有,请更正<的返回类型strong>calcVolume() 方法。现在使用 p1 或 p2 而不是总是调用 calcVolume() 方法。
通过删除所有调用,您最终将消除大量困惑的代码,这将使您的代码更易于阅读和遵循,但最重要的是,您的 CPU 会喜欢您,JVM 也会喜欢您。好吧,也许没那么多,但至少你不需要输入那么多。
哪个包“小于”,哪个包“大于”?套餐 1 是套餐 2 的两倍还是套餐 2 大于套餐 1?这会产生很多 IF/ELSE。一组 IF/Else 就足够了,因此最好将这些名称指定也放入字符串变量中,并允许代码在消息显示到控制台之前确定哪个字符串包含哪个字符串:
String pkgHigh = "Package 'A'";
String pkgLow = "Package 'B'";
现在,哪个包的尺寸(体积)更大:
p1 = 34;
p2 = 79;
由于我们只处理两个包,因此我们假设 p1 的体积将始终等于或大于 p2 的体积,但是嘿,让我们检查一下,但在此之前让我们建立体积差异乘数:
double volDiff = p1 / p2;
此处声明了 volDiff double 型变量,并将其初始化为 p1 和 p2 的除法 (p1/p2)。如果包装“A”体积大于或等于包装“B”,则这种划分效果很好。现在让我们看看哪个包的体积实际上更大:
if (p1 != p2 && Math.max(p1, p2) == p2) {
// Package 2 has the greater volume...
volDiff = p2 / p1;
pkgHigh = "Package 'B'";
pkgLow = "Package 'A'";
}
我们可以清楚地看到 p2 大于 p1,因为我们在那里硬编码了值。然而,当代码在现实世界中运行时,硬编码就不会出现这种情况。这些值将根据输入的实际封装尺寸来确定。无论如何,我们知道在这种情况下 p2 大于 p1,下面是上面 IF block 如何确定的:
现在只需编写一系列 IF/Else 条件即可显示请求的结果。整个代码如下所示:
// Double data types should be used for volume values.
double p1 = (double) 32; // Volume of Package 1.
double p2 = (double) 32; // Volume of Package 2.
String msg = ""; // For Message String to Display.
String pkgHigh = "Package 'A'"; // Package designation variable.
String pkgLow = "Package 'B'"; // Package designation variable.
// Double data type should be used for the Volume difference Multiplier.
double volDiff = p1 / p2; // Volume Difference Multiplier.
/* Determine if the variables contents need to change.
The IF block below checks to see if package 1 and
package 2 are not equal and sees if the volume for
package 2 is higher than package one. If both of these
pose as true then the Volume Difference Multiplier is
calculated based on Package 2 divided by Package 1
since Package 2 is deemed to contain a higher volume.
The package designation string variables are also changed
to properly reflect which package is higher or lower
within the message strings. Otherwise package designators
remain the very same as they were initialized to. */
if (p1 != p2 && Math.max(p1, p2) == p2) {
// Package 2 has the greater volume...
volDiff = p2 / p1;
pkgHigh = "Package 'B'";
pkgLow = "Package 'A'";
}
/* Determine the appropriate message to display in console based on the
Volume Difference Multitplier value. Package designation within the
messages has been determined pkg1/pkg2 initialization and within the
above IF block. */
// Packages are the same cost.
if (volDiff == 1.0d) {
msg = "The shipping cost for " + pkgHigh + " and " +
pkgLow + " are the same.";
}
// One Package cost is slightly higher than the other.
else if (volDiff > 1.0d && volDiff < 2.0d) {
msg = "The shipping cost for " + pkgHigh +
" is slightly higher than it is for " +
pkgLow + ".";
}
// One Package cost is Twice as much as the other.
else if (volDiff >= 2.0d && volDiff < 3.0d) {
msg = "The shipping cost for " + pkgHigh +
" is twice the cost than it is for " +
pkgLow + ".";
}
// One Package cost is Triple that of the other.
else if (volDiff >= 3.0d && volDiff < 4.0d) {
msg = "The shipping cost for " + pkgHigh +
" is triple the cost than it is for " +
pkgLow + ".";
}
// One Package cost is Quadruple that of the other.
else if (volDiff >= 4.0d && volDiff < 5.0d) {
msg = "The shipping cost for " + pkgHigh +
" is quadruple the cost than it is for " +
pkgLow + ".";
}
// One Package cost is 'n' times greater than the other.
else {
/* Round DOWN the Multiplier value by using
Math.round() and converting to integer. */
int multiple = Math.round((int) volDiff);
msg = "The shipping cost for " + pkgHigh + " is " +
multiple + " times higher than it is for " +
pkgLow + ".";
}
System.out.println(msg); // Display the info message to Console.
谈论代码困惑。是的,过多的注释也会造成困惑,但都放在代码中以提供帮助。如果需要,可以轻松将其删除。
关于java - 使用打印到屏幕上的体积的成本差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58566552/
有没有更好的方法用 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
我是一名优秀的程序员,十分优秀!