鉴于以下标志,
[Flags]
public enum Operations
{
add = 1,
subtract = 2,
multiply = 4,
divide = 8,
eval = 16,
}
Run Code Online (Sandbox Code Playgroud)
如何实现IF条件来执行每个操作?在我的尝试中,第一个条件适用于add,eval,这是正确的.然而,第一个条件也适用于减法,eval,这是不正确的.
public double Evaluate(double input)
{
if ((operation & (Operations.add & Operations.eval)) == (Operations.add & Operations.eval))
currentResult += input;
else if ((operation & (Operations.subtract & Operations.eval)) == (Operations.subtract & Operations.eval))
currentResult -= input;
else
currentResult = input;
operation = null;
return currentResult;
}
Run Code Online (Sandbox Code Playgroud)
我看不出是什么问题.
抛出以下实例的正确异常是什么?
如果,例如,我有一个类:专辑与歌曲的集合:
List<Song>
Run Code Online (Sandbox Code Playgroud)
在Album中添加歌曲的方法:
public void AddSong(Song song)
{
songs.Add(song);
}
Run Code Online (Sandbox Code Playgroud)
如果用户尝试添加已存在的歌曲,我应该抛出异常吗?如果是这样,什么类型的例外?
我听过这样的短语:"只在异常情况下使用异常",但我想告诉客户端实现Album究竟出了什么问题(不只是返回一个布尔值).
我总是遇到声称Java被解释的文章.我知道Oracle的HotSpot JRE提供即时编译,但对于大多数桌面用户来说情况如此吗?例如,如果我通过以下网址下载Java:http://www.java.com/en/download,这是否包含JIT编译器?
如果我有一个超类,比如说Animal,
和两个子类:Zebra和Giraffe,
如果我决定定义一个动物矢量:
Vector <Animal> animals = new Vector();
Run Code Online (Sandbox Code Playgroud)
我想说:你可以添加长颈鹿,但你必须先拥有至少一个斑马.
不使用RTTI的最佳方法是什么?(instanceof)
我正在尝试实现一个返回十六进制值字符串的函数.我使用此函数打印出十六进制值:
void print_hex(unsigned char *hash, const hashid type) {
int i;
for (i = 0; i < mhash_get_block_size(type); i++) {
printf("%.2x", hex[i]);
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
这会输出一些十六进制值,例如 71c092a79cf30c4c7e7baf46a4af3c78cedec9ae3867d1e2600ffc39d58beaf2
如何修改此函数以使其返回字符串?即
unsigned char *get_hash_str(unsigned char *hash, const hashid type) { /* ?? */ }
Run Code Online (Sandbox Code Playgroud)
(目标是稍后比较2个值)