我有一个大学的分配,要求我实现一个实现Iterator接口的内部类.迭代器适用于单链表超类.
目前我的内部类看起来像这样:
private class ListIterator implements Iterator<V>{
Node temp;
boolean nextCalled = false;
ListIterator(Node fo){
this.temp = fo;
}
@Override
public boolean hasNext() {
if(temp != null){
return true;
}
return false;
}
@Override
public V next() {
nextCalled = true;
return temp.getReprValue();
}
@Override
public void remove() {
if(nextCalled && hasNext()){
nextCalled = false;
removeElement(temp.getReprKey());
temp = temp.getNext();
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,即使列表实际为空,hasNext()方法也返回true.其他一切似乎都有效.我可能忽略了某处的逻辑缺陷,但我自己找不到它.
我目前正在为iOS平台开发游戏.游戏的初始视图控制器是登录屏幕,一旦玩家登录,他就会进入加载屏幕,然后是导航视图控制器,其中包含带有当前游戏列表的表格视图.故事板的相关视图关系如下所示:
[登录界面] --modalsegue-> [加载画面] - modalsegue-> [导航控制器] - 关系 - > [tableview(带退出按钮)]
我想在导航视图的[表格视图]的底栏处创建一个退出按钮,该按钮将播放器带回[登录屏幕].我怎样才能做到这一点?
提前致谢!
iphone user-interface objective-c uinavigationcontroller ios
我正在编写 C++ 代码,并遇到了一种情况,我希望为我的类重载方括号运算符。从各种来源,我发现您通常使用两种方法来执行此操作,一种使用const关键字,另一种不使用关键字,但在方法名称之前const使用与号 ( )。&下面给出一个例子。
int MyClass::operator[](unsigned int i) const {
return this->values[i];
}
int & MyClass::operator[](unsigned int i) {
return this->values[i];
}
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
const,一种不带关键字?&)有什么作用?我目前正在编写一个C++程序,利用MS Win8.1上的ttmath api来查找Mersenne素数.我已经编写了Lucas-Lehmer算法,但无论我尝试什么价值,我总是得到一个没有Mersenne-number的消息.有人能指出我的Lucas-Lehmer算法中的错误吗?
void LLIteration::calculate()
{
ttmath::UInt<100> num = 2;
ttmath::UInt<100> s = 4;
(num.Pow(this->exp));
num = num-1;
for(int i = 3; i < exp; ++i){
s = (s*s-2) % num;
std::cout << s << std::endl;
}
if(s == 0){
std::cout << "Found Mersenne prime, 2^" << exp << " = " << num << std::endl;
} else {
std::cout << "no prime 2^" << exp << " = " << num << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我总是得到没有主要信息,我无法弄清楚为什么.Exp是一个表示将2加到的幂的int,其余的非常简单.
提前致谢!
我目前正在编写一个命令行程序,它应该从文本文件中获取行并将数据添加到HashMaps数组中.我目前NullPointerException在运行此方法时得到了一个.
Public class Vaerdata {
String[] linje;
String line;
String line2;
HashMap<String, Stasjon> stasjonsmap = new HashMap<String, Stasjon>();
HashMap<String, Stasjon>[] regionmap = (HashMap<String, Stasjon>[]) new HashMap<?, ?>[6];
void init() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("stasjoner_norge.txt"));
BufferedReader brData = new BufferedReader(new FileReader("klimadata2012.txt"));
for(int i = 0; i < 10; i++){
brData.readLine();
}
br.readLine();
while((line = br.readLine()) != null){
linje = line.split("\\s+");
stasjonsmap.put(linje[1], new Stasjon(Integer.parseInt(linje[1]), linje[2], Integer.parseInt(linje[3]), linje[4], linje[5], linje[6]));
}
if(linje[6].equals("AGDER")){
System.out.println(stasjonsmap.get(linje[1])); //DEBUG
regionmap[1].put(stasjonsmap.get(linje[1]).navn, stasjonsmap.get(linje[1]));
System.out.println(regionmap[1].get(stasjonsmap.get(linje[1]).navn)); //DEBUG …Run Code Online (Sandbox Code Playgroud) 我试图使用以下代码从iOS上的Xcode中的支持文件文件夹中访问.txt文件:
NSString* filePath = @"filename.txt";
NSLog(@"File path: %@", filePath);
NSString* fileRoot = [[NSBundle mainBundle] pathForResource:filePath ofType:@"txt"];
NSLog(@"File root: %@", fileRoot);
Run Code Online (Sandbox Code Playgroud)
第一个NSLog打印出我希望它打印的内容,但最后一个NSLog总是打印
文件根:(null)
在(尝试)将文件读入内存后从文件中访问文本也简单地给了我一个(null)打印输出.
这个问题的解决方案可能就在我的鼻子底下,我似乎无法找到它.任何帮助非常感谢!提前致谢.
我正在大学学习计算机体系结构和汇编编程课程.前段时间我们学会了如何在ASM中编写函数并用C语言调用它们.有一点我不明白 - 在每个ASM函数的开头,讲师总是做两个指令;
pushl %ebp
movl %esp, %ebp
Run Code Online (Sandbox Code Playgroud)
我不明白为什么他这样做,以及它在调用时对函数有什么影响.在我的Intel Mac上,在为IA32编写程序集时,无论是否包含这些指令或者只是跳过它,似乎都没有任何区别.
有人可以告诉我在调用这些指令时实际发生了什么,以及为什么总是在ASM函数的开头调用它们?最好是在GNU ASM中,虽然Intel ASM也没问题.
什么是a,glm::vec2它的应用是什么?我在 glm 参考中找不到它。不过,我可以找到 vec1。这让我认为这vec2是针对 2D 的,vec3是针对 3D 的,等等,但我可能是错的。
我试图在C中编写一个程序,它找到f(x)的二阶导数的数值,其中给出了x.当我使用我的函数找到一阶导数时,一切似乎都运行正常,但递归的二阶导数部分总是给我0.0.这是我的功能:
double derivative(double (*f)(double), double x0, int order) {
if(order == 1){
const double delta = 1.0e-6;
double x1 = x0-delta;
double x2 = x0+delta;
double y1 = f(x1);
double y2 = f(x2);
return (y2 - y1) / (x2 - x1);
} else if(order == 2) {
const double delta = 1.0e-6;
double x1 = derivative(f, x0, 1)-delta;
double x2 = derivative(f, x0, 1)+delta;
double y1 = derivative(f, f(x1), 1)-delta;
double y2 = derivative(f, f(x2), 1)+delta;
return (y2 - y1) …Run Code Online (Sandbox Code Playgroud) 我刚刚重新审视 C++,我有一个关于 [] 运算符重载的问题,更具体地说,为什么我的程序不起作用。
在 vec.cpp 中给出以下代码:
double Vec::operator[](unsigned int i) const {
return this->values[i];
}
double & Vec::operator[](unsigned int i) {
return this->values[i];
}
Run Code Online (Sandbox Code Playgroud)
这些在 vec.h 中定义为 Vec 类的方法,如果我不在 main.cpp 中使用该运算符,一切都很好。它可以正常编译,没有错误。
但是,一旦我在主函数中执行此操作(使用 std::cout 和 std::endl):
cout << a[0] << endl;
Run Code Online (Sandbox Code Playgroud)
事情出了问题。我得到的错误是一堆
candidate function template not viable: no known conversion from 'Vec' to 'char' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __os, char __cn)
Run Code Online (Sandbox Code Playgroud)
您可以在其中将“char”替换为任何原始数据类型。
这是一个工作示例
cout << a[0] << endl;
Run Code Online (Sandbox Code Playgroud)
candidate function template not viable: no known conversion from 'Vec' to …Run Code Online (Sandbox Code Playgroud)