本文将分享这个BMI计算器有什么问题?的详细内容,并且还将对bmi计算器怎么算进行详尽解释,此外,我们还将为大家带来关于BMI计算器、IBM的JCE提供程序有什么问题?、java–这个clone()有
本文将分享这个BMI计算器有什么问题?的详细内容,并且还将对bmi计算器怎么算进行详尽解释,此外,我们还将为大家带来关于BMI计算器、IBM的JCE提供程序有什么问题?、java – 这个clone()有什么问题?、java – 这个简单的“double”计算有什么问题?的相关知识,希望对你有所帮助。
本文目录一览:这个BMI计算器有什么问题?(bmi计算器怎么算)
考虑以下语句序列:
double lbs;
double kg = lbs/2.205; // lbs is uninitialized here,oops
cout << "What is your weight (lbs)?" << endl;
cin >> lbs;
您正在使用lbs
,然后再从用户那里读取它,实际上,甚至在完全对其进行初始化之前,这都会引起未定义的行为。
您需要像这样重新排列语句:
double lbs;
cout << "What is your weight (lbs)?" << endl;
cin >> lbs;
double kg = lbs/2.205; // compute kg after reading in lbs
您还需要对其他变量做类似的事情。
,必须在 读取值后进行计算。否则,将使用不确定的值进行计算。
footer {
background-color: #555;
}
BMI计算器
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
function gm () {/*判断性别*/
var man = document.getElementById("left-head-gender-man");
var t = document.getElementById("t");
if (man.checked) {
t.src = "js/man1.jpg";
}
}
function gw () {/*判断性别*/
var woman = document.getElementById("left-head-gender-woman");
if (woman.checked) {
t.src = "img/girl0.jpg";
}
}
function count () {
/*获得身高的对象*/
var hg = document.getElementById("left-head-height-id").value;
/*获得体重对象*/
var wg = document.getElementById("left-head-weight-id").value;
/*通过身高体重的对象计算BMI值*/
var ct = parseInt(wg)/(parseFloat(hg)*parseFloat(hg));
/*重新获取性别对象*/
var man = document.getElementById("left-head-gender-man");
var woman = document.getElementById("left-head-gender-woman");
/*分别获取需要改变的值得对象 a为最右侧上部分的胖瘦描述,b为最右侧下方显示的体重*/
var a = document.getElementById("a");
var b =document.getElementById("b");
/*c 为右侧图片下方的BMI值得范围 t为右侧上方图片*/
var c = document.getElementById("c");
var t = document.getElementById("t");
/*div为c 所在div的对象*/
var div = document.getElementById("right-right");
if (man.checked) {
/*通过判断分别进行替换内容*/
if (ct<18.5) {
a.innerHTML = "偏瘦";
b.innerHTML = wg;
t.src = "js/man1.jpg";
c.innerHTML = "BMI<18.5";
div.style.backgroundColor = "deepskyblue";
}
if (ct>=18.5&&ct<24) {
a.innerHTML = "正常";
b.innerHTML = wg;
t.src = "js/man2.jpg";
c.innerHTML = "18.5<=BMI<24";
div.style.backgroundColor = "#008000";
}
if (ct>=24&&ct<28) {
a.innerHTML = "过重";
b.innerHTML = wg;
t.src = "js/man3.jpg";
c.innerHTML = "24<=BMI<28";
div.style.backgroundColor = "gold";
}
if (ct>=28) {
a.innerHTML = "肥猪";
b.innerHTML = wg;
t.src = "js/man4.jpg";
c.innerHTML = "BMI>28";
div.style.backgroundColor = "chocolate";
}
}
if (woman.checked) {
if (ct<18.5) {
a.innerHTML = "偏瘦";
b.innerHTML = wg;
t.src = "img/girl10.jpg";
c.innerHTML = "BMI<18.5";
div.style.backgroundColor = "deepskyblue";
}
if (ct>=18.5&&ct<24) {
a.innerHTML = "正常";
b.innerHTML = wg;
t.src = "img/girl4.jpg";
c.innerHTML = "18.5<=BMI<24";
div.style.backgroundColor = "#008000";
}
if (ct>=24&&ct<28) {
a.innerHTML = "过重";
b.innerHTML = wg;
t.src = "img/girl5.jpg";
c.innerHTML = "24<=BMI<28";
div.style.backgroundColor = "gold";
}
if (ct>=28) {
a.innerHTML = "肥婆!";
b.innerHTML = wg;
t.src = "img/girl1.jpg";
c.innerHTML = "BMI>28";
div.style.backgroundColor = "chocolate";
}
}
}
</script>
<style type="text/css">
#container{
width: 1000px;/*主框架的宽、高*/
height: 600px;
background-color:darkgray ;/*填充色*/
position: relative;/*相对定位*/
top: 120px;
left: 120px;
}
#left{
width: 50%;
height: 580px;
background-color: white;
position: absolute; /*绝对定位*/
top: 7px;
left: 5px;
float: left; /*浮动*/
}
#left-head{
width: 100%;
height: 60%;
}
#left-head-title{
position: absolute;
left: 20px;
top: 0px;
}
#left-head-height{
position: absolute;
left: 150px;
top: 100px;
}
#left-head-weight{
position: absolute;
left: 150px;
top: 160px;
}
#left-head-gender{
position: absolute;
left: 150px;
top: 220px;
}
#left-head-result{
width: 400px;
height: 25px;
position: absolute;
left: 50px;
top: 280px;
}
#left-head-result-a{
width: 400px;
height: 25px;
background-color:lightpink ;/*填充色*/
color: white;
}
#left-foot{
width: 100%;
height: 40%;
color: white;
}
#left-foot-table{
width: 100%;
height: 100%;
}
#right{
width: 48%;
height: 580px;
position: absolute;
top: 7px;
right: 5px;
float: right;
}
#right-left{
width:180px;
height:350px;
position: absolute;
top: 100px;
left: 40px;
}
#right-left-foot{
width: 180px;
height: 50px;
position: absolute;
bottom: 0px;
right: 0px;
color: white;
background-color:crimson ;
text-align: center;
line-height: 12px;
}
#right-right{
width:180px;
height:350px;
background-color: deepskyblue;
float: right;
position: absolute;
top: 100px;
right: 40px;
}
#right-right-head{
width:180px;
height:175px;
text-align: center;
line-height: 250px;
}
#right-right-foot{
width:180px;
height:175px;
text-align: center; /*文本居中*/
line-height: 10px;
}
</style>
</head>
<body>
<div id="container">
<div id="left">
<div id="left-head">
<div id="left-head-title">
<h1>BMI计算</h1>
</div>
<div id="left-head-height">
身高:<input type="text" id="left-head-height-id" />米
</div>
<div id="left-head-weight">
体重:<input type="text" id="left-head-weight-id" />公斤
</div>
<div id="left-head-gender">
性别:<input type="radio" name="sex" id="left-head-gender-man" value="man" onclick="gm()"/>男
<input type="radio" name="sex" id="left-head-gender-woman" value="woman" onclick="gw()" />女
</div>
<div id="left-head-result" >
<input type="button" id="left-head-result-a" value="计算BMI" onclick="count()"/>
</div>
</div>
<div id="left-foot" >
<table border="1" cellspacing="0" cellpadding="0" id="left-foot-table" align="center" width="200px" height="5px" >
<tr bgcolor="black" >
<th>分类</th>
<th>BMI范围</th>
</tr>
<tr align="center" bgcolor="deepskyblue">
<td>偏瘦</td>
<td><18.5</td>
</tr>
<tr align="center" bgcolor="#008000">
<td>正常</td>
<td>18.5~23.9</td>
</tr>
<tr align="center" bgcolor="gold">
<td>过重</td>
<td>24~27.9</td>
</tr>
<tr align="center" bgcolor="chocolate">
<td>肥胖</td>
<td>>28</td>
</tr>
</table>
</div>
</div>
<div id="right">
<div id="right-left">
<div id="right-left-head">
<img src="img/girl0.jpg" width="180px" height="300px" id="t"/>
</div>
<div id="right-left-foot">
<h2 id="c">BMI<18.5</h2>
</div>
</div>
<div id="right-right" >
<div id="right-right-head">
<h1 id="a">偏瘦</h1>
</div>
<div id="right-right-foot">
<h1 id="b">40kg</h1>
</div>
</div>
</div>
</div>
</body>
</html>
IBM的JCE提供程序有什么问题?
我有一个JCE测试,可以与我尝试过的所有Sun JDK正常工作,但是对于各种IBM J9 JDK(例如1.6.0 build
pwi3260sr8-20100409_01(SR8))却失败。在加密模式下初始化密码时,会发生以下例外情况。为什么IBM
JCE不能使用其自己的私钥?我在代码中缺少什么吗?
public void testBasicKeyGeneration() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, NoSuchProviderException, SignatureException { KeyPairGenerator generator = KeyPairGenerator.getInstance( "RSA" ); generator.initialize( 2048 ); KeyPair pair = generator.generateKeyPair(); String data1 = "123456789012345678901234567890123456789012345678901234567890"; Cipher cipher = Cipher.getInstance( "RSA" ); cipher.init( Cipher.ENCRYPT_MODE, pair.getPrivate() ); byte[] encrypted = cipher.doFinal( data1.getBytes() ); cipher.init( Cipher.DECRYPT_MODE, pair.getPublic() ); byte[] decrypted = cipher.doFinal( encrypted ); String data2 = new String( decrypted ); assertEquals( "en/decryption failed", data1, data2 ); }
这是堆栈跟踪:
java.security.InvalidKeyException: Private key cannot be used to encrypt.at com.ibm.crypto.provider.RSA.engineInit(Unknown Source)at javax.crypto.Cipher.a(Unknown Source)at javax.crypto.Cipher.a(Unknown Source)at javax.crypto.Cipher.init(Unknown Source)at javax.crypto.Cipher.init(Unknown Source)at test.Test.testBasicKeyGeneration(LicenseHelperTest.java:56)
答案1
小编典典我不确定这一点,但我相信JCE具有嵌入式策略,将对公钥的加密和对私钥的解密限制为限制。
在示例代码中,加密是通过私钥完成的。这将需要公共密钥进行解密,这意味着拥有公共密钥的任何人都可以访问编码数据。尽管有它的用途,但它不是公认的模式,并且IBM实现可能“保护”您免于意外创建公开可读的加密数据。
当这些错误被逆转时它可以正确测试的事实倾向于证实我的怀疑,但是我还没有找到一份说明那么多的正式文件。
java – 这个clone()有什么问题?
public Object clone() { Object obj = new Object(); Object object = obj.clone(); //Emphasis here return object; }
错误是:Object类型的方法clone()不可见.
但是我的Employee类在类层次结构中,可以访问Object类中的protected clone()方法.
这是我简单的Employee类:
public class Employee extends Person implements Cloneable { private int ID; public Employee() { ID = 0; } public void setID(int ID) { this.ID = ID; } public int getID() { return ID; } public Object clone1() throws CloneNotSupportedException { try { Object obj = new Object(); Object object = obj.clone(); return object; } catch (CloneNotSupportedException ex) { return null; } }
解决方法
但是,我很少会使用clone来复制对象.一个这样安全的例子是array.clone().我宁愿使用copy-constructor习惯用法或手动复制/赋值.
关于背景问题,在Effective Java(第2版)中有第11项.可克隆接口是一种特殊的接口,因为它修改了Object类有关克隆的行为.基本上它是一个在Java中启用类接口的功能.
编辑:根据您的示例,您可能需要在一般情况下将clone()调用包装在CloneNotSupportedException的try-catch中.
Edit2:重述了我的回答
Edit3:你是否覆盖了公共上下文中的clone()?在示例中,您尝试克隆一个Object,它位于java.lang包中 – 几乎不是您的代码所在的包.
编辑4:我认为答案已经在其他帖子中,只是想反思潜在的问题.
编辑5:试试这个:
public Object clone1() throws CloneNotSupportedException { return super.clone(); }
编辑6然后将您的方法命名为public abstract Object copy(),例如,在实现中,使用super.clone() – 以避免混淆.
编辑7我做了一些遮遮掩掩并提出了以下解决方案:
public class Cloner { public static abstract class Person { protected abstract Object clone1() throws CloneNotSupportedException; public Object copy() throws CloneNotSupportedException { return clone1(); } } public static class Employee extends Person implements Cloneable { @Override protected Object clone1() throws CloneNotSupportedException { return super.clone(); } } public static void main(String[] args) throws Exception { new Employee().copy(); } }
但基本上它与将抽象方法重命名为clone()之外的其他概念相同.
Edit8:修复了我的样本,现在它无一例外地工作了.
(但实际的功劳归功于GáborHargitai的super.clone())
java – 这个简单的“double”计算有什么问题?
这个简单的“双”计算在java中有什么问题?
我知道一些十进制数字不能正确地用浮点/双二进制格式表示,但是使用变量d3,java能够存储和显示2.64没有任何问题.
double d1 = 4.64; double d2 = 2.0; double d3 = 2.64; double d4 = d1 - d2; System.out.println("d1 : " + d1); System.out.println("d2 : " + d2); System.out.println("d3 : " + d3); System.out.println("d4 : " + d4); System.out.println("d1 - d2 : " + (d1 - d2));
回答,
d1 : 4.64 d2 : 2.0 d3 : 2.64 d4 : 2.6399999999999997 d1 - d2 : 2.6399999999999997
解决方法
在二进制2.64是10.10100011110101110000101000111101循环,换句话说,不能在二进制中表示,因此小错误. Java对d3很好,但是一旦实际的计算涉及到它就必须落在真实的表现上.
Binary Calculator
更多:
2.64= 10.10100011110101110000101000111101 4.64=100.1010001111010111000010100011110
现在,即使在这两种情况下,.64都是一样的,因为4 = 100使用了比2 = 10更多的双重有效数字,所以当你说4.64-2.0和2.64的.64在这两种情况下用不同的舍入误差表示,这个丢失的信息无法恢复为最终答案.
注:我在这里没有使用双重数字的重要数字,无论二进制计算器将产生什么,然而效果是相同的,无论数字的有效数字
不要假设双重值是准确的(尽管它们的不准确性是微观的,只是因为某些数字不能用二进制表示).
浮点数并不准确,但只能从小数点看
虽然你应该总是期望双精度在最后几个小数位将会有小的错误,但将二进制表示视为“坏”或更差的十进制是错误的.
我们都习惯了某些数字(例如1/3)不能十进制表示,我们接受这样一个数字将最终为0.333333333333,而不是真正的值(我无法写下无限空间);在这种情况下,二进制数不能被精确表达. 1/10是不能用二进制精确表达的数字;这只是因为我们习惯了十进制
今天关于这个BMI计算器有什么问题?和bmi计算器怎么算的介绍到此结束,谢谢您的阅读,有关BMI计算器、IBM的JCE提供程序有什么问题?、java – 这个clone()有什么问题?、java – 这个简单的“double”计算有什么问题?等更多相关知识的信息可以在本站进行查询。
本文标签: