我是processing.org和Java的新手.我试图将对象存储在HashMap中,然后迭代HashMap的值,调用存储对象上的方法.为了做到这一点,我假设我需要将迭代器向下转换为我的类的类型,但这会抛出一个ClassCastException("java.util.HashMap $ ValueIterator不能转换为sketch_oct27a $ MyClass").以下简化代码演示了此行为:
import java.util.*;
void setup() {
HashMap m = new HashMap();
m.put("First", new MyClass());
m.put("Second", new MyClass());
m.put("Third", new MyClass());
Iterator iter = m.values().iterator();
while (iter.hasNext()) {
((MyClass)iter).SaySomething(); // Throws ClassCastException
iter.next();
}
}
class MyClass {
void SaySomething() {
println("Something");
}
}
Run Code Online (Sandbox Code Playgroud)
如何通过迭代器调用SaySomething()方法?
我最近一直在学习Processing编程语言.处理包括一个称为处理开发环境(PDE)的IDE,但编辑器非常基础.
IDE可以选择使用外部编辑器.我的首选编辑之一是jEdit,因为它支持跨平台.Jedit已经内置了对170多种语言的支持,但目前还没有处理过,我认为它仍然有点太小众.
如何将具有所有颜色突出显示的处理添加到jEdit?
我正在尝试在Processing中使用ArrayList()方法.
我有这个:
ArrayList trackPoints = new ArrayList();
//inside a loop
int[] singlePoint = new int[3];
singlePoint[0] = 5239;
singlePoint[1] = 42314;
singlePoint[2] = 1343;
//inside a loop
trackPoints.add(singlePoint);
Run Code Online (Sandbox Code Playgroud)
所以基本上我想在我的ArrayList中添加一个带有三个值的数组"singlePoint".
这似乎工作正常,因为现在我可以使用println(trackPoints.get(5));,我得到这个:
[0] = 5239;
[1] = 42314;
[2] = 1343;
Run Code Online (Sandbox Code Playgroud)
但是,如何获得此数组的单个值?
println(trackPoints.get(5)[0]); 不起作用.
我收到以下错误:"表达式的类型必须是数组类型,但它解析为对象"
知道我做错了什么吗?如何从这个包含多个数组的arrayList中获取单个值?
谢谢您的帮助!
我正在尝试将一个processing.org应用程序移植到python中并且遇到一些困难.
我需要在python中写这个:
int[][] elevation; // elevations in meters
float[][] felevation; // scaled to range [0,1] where 1=max
int maxheight;
void setup(){
size(600,600,P2D);
// read srtm binary file
elevation=new int[1201][1201];
felevation=new float[1201][1201];
byte b[] = loadBytes("N30W091.hgt"); // THIS IS A BINARY FILE
int ix=0;
maxheight=0;
for (int row=0;row<1201;row++) {
for (int col=0;col<1201;col++) {
// bytes are signed, from -128 to 127, converts to unsigned...
int hi = b[ix] & 0xff;
int lo = b[ix+1] & 0xff;
int el=(int)((hi<<8)|lo); // big endian! …Run Code Online (Sandbox Code Playgroud) 我正在使用串行事件将从arduino读取的rfid标签传递给处理.在串行事件中,我正在解析并将变量转换为整数.这大部分工作,只有一张rfid卡一直在抛出错误.
void serialEvent(Serial thisPort)
{
String inString = thisPort.readString();
if(inString != null)
{
Serial connect1 = (Serial) connections.get(0);
if(thisPort == connect1 )
{
Chair chair = (Chair) chairs.get(0);
if(inString.contains("UID Value:"))
{
int p2 = inString.indexOf(":");
String pString = inString.substring(p2+1);
String pString2 = pString.substring (0,10);
//println(pString2);
pString2.trim();
println("String length: " + pString2.length());
chair.setRFID(pString2);
println(pString2);
}
}
}
}
void setRFID(String r)
{
try{
this.rfid = Integer.parseInt(r);
}
catch (Exception e) {
e.printStackTrace();
}
//set position of person to chair
for (Person …Run Code Online (Sandbox Code Playgroud) 当我试验Processing(for循环和变量)时,我总是想弄清楚哪个点与变量的哪个迭代有关:
for (i = 10; i <100; i +=5) {
rect (i, i+10, 50, 50);
}
Run Code Online (Sandbox Code Playgroud)
我有什么方法可以显示他们的点旁边的坐标吗?或者是否可以对代码迭代进行着色?可能使第一个红色,然后是蓝色等.
任何指向资源,或非常欢迎的例子.
我刚刚开始学习处理,并且很好奇是否有一个用于对表单的复数建模的库a + bi。特别是可以处理复数数字乘法的数字,例如:
(a + bi)(a + bi)
Run Code Online (Sandbox Code Playgroud) 我怎样才能简化这个长列表..我不想写Arduino.LOW这么多次..
int[] values = { Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW };
Run Code Online (Sandbox Code Playgroud) 我试图获得从0到n的增量,然后从n-1减少到0,并反复重复该循环.
在这个以Processing编写的例子中,我希望背景从黑色(i = 0)逐渐变为白色(i = 255),然后逐渐变为白色到黑色,依此类推.现在我只能让它从黑色变为白色,然后它突然变回黑色.
int i = 0;
void setup(){
size(640, 360);
frameRate(60);
}
void draw(){
background(i);
i++;
if(i==256){i=0;}
}
Run Code Online (Sandbox Code Playgroud)