假设我有数据:
x = [3,3,1,1,1,2,2,1,1,1,1]
我想要输出:
y = [3,1,2,1]
使用unique()函数我可以得到:
z = [3,1,2]
但是如你所见,我最终错过了"一个".所以,我试着写一个循环,但是没有做我应该做的事情.我希望它删除其中一个重复值,循环应该确保只剩下一个值.但是,输出是:
x = [3,3,1,1,2,1,1]
循环:
for i=1:length(x)
if x(i)==x(i+1)
x(i)=[];
end;
end;
有没有办法像y一样生成输出?我的循环中的错误在哪里?
正如标题所说,我有NPE错误.它发生在线:
while (getWidth() > bowl.getX()+10) {
Run Code Online (Sandbox Code Playgroud)
如果我删除它,它会显示它发生在下一行:
bowl.move(10.0, 0);
Run Code Online (Sandbox Code Playgroud)
我得出结论,日食没有看到我的"碗"初始化.为什么?不是"新GOval"处理的吗?我在其中一个帖子中看到一个解决方案是将声明和初始化分成不同的行,但我认为它不太可能是主要的解决方案(此外,它对我的情况没有帮助)对此有任何建议码?
此代码应该创建一个圆圈,将其放在屏幕的左上角,并在单击鼠标按钮后移动圆圈.圆圈已成功绘制,但点击后会显示NPE消息.
import acm.program.*;
import acm.graphics.*;
import java.awt.event.*;
public class animation extends GraphicsProgram {
public void init() {
GOval bowl = new GOval(10,10);
add(bowl);
addMouseListeners();
}
public void mouseClicked(MouseEvent e) {
while (getWidth() > bowl.getX()+10) {
bowl.move(10.0, 0);
pause(50);
}
}
private GOval bowl;
}
Run Code Online (Sandbox Code Playgroud) 我写了一个方法.它正在模仿翻转硬币并试图检测"连续三个头"的案例.一旦出现连续三个头(counter = 3),该方法返回到达此点所花费的迭代次数(genCounter).
问题是eclipse说这个方法应该返回"int",但我确实返回了genCounter.(counter和genCounter都是int实例变量).正如我从浏览互联网所理解的那样,问题在于我没有在其他地方返回任何东西.但我不希望它返回任何东西,万一我想从头开始我的方法.
private int isThree(){
String coin = rg.nextBoolean()?"Heads":"Tails";
if (coin.equals("Heads")){
counter += 1;
}else{
counter = 0;
}
genCounter += 1;
if (counter == 3) {
return genCounter;
}else{
isThree();
}
}
Run Code Online (Sandbox Code Playgroud)