如何解决Java for循环不执行
| 我的蓝牙扫描远程设备发现代码出现问题。 如果我取消注释\“ system.out.print(devicesDiscovered);,它将扫描并打印MAC地址。 但我希望能够从Vector提取每个MAC地址并将其放入字符串中。 我有两个不同的FOR循环来执行此操作,但是它们似乎都没有执行。 码:import java.io.IOException;
import java.util.List;
import java.util.Vector;
import javax.bluetooth.*;
public class BluetoothDeviceDiscovery {
public static final Vector/*<RemoteDevice>*/ devicesDiscovered = new Vector();
public static void main() throws IOException,InterruptedException {
final Object inquiryCompletedEvent = new Object();
devicesDiscovered.clear();
final DiscoveryListener listener = new DiscoveryListener() {
public void deviceDiscovered(RemoteDevice btDevice,DeviceClass cod) {
devicesDiscovered.addElement(btDevice);
//
String testingAgain = devicesDiscovered.toString();
System.out.println(\"What?? : \" + testingAgain);
/*
* As far as i know,the following two FOR loops do the same thing
* But both of them are not being executed...
*/
//Its not executing this...
for(int i=0; i< devicesDiscovered.size(); i++) {
System.out.println(\"test if this gets output\");
String test = (String) devicesDiscovered.elementAt(i);
System.out.println(\"Test: \" + test);
}
//Its not executing this....
for(int i=0; i> ((List) btDevice).size(); i++){
System.out.println(\"test if this gets output 1\");
String testing = (String) devicesDiscovered.toString();
System.out.print(\"Test1: \" + testing);
}
//Prints the MAC addresses [macaddress,macaddress,etc]
// System.out.println(devicesDiscovered);
/*
* Now need to extract each macaddress from devicesDiscovered
* and convert from a Vector to a String
*/
}
public void inquiryCompleted(int discType) {
System.out.println(\"Device Inquiry completed!\");
synchronized(inquiryCompletedEvent){
inquiryCompletedEvent.notifyAll();
}
}
public void serviceSearchCompleted(int transID,int respCode) {
}
public void servicesDiscovered(int transID,ServiceRecord[] servRecord) {
}
};
synchronized(inquiryCompletedEvent) {
boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC,listener);
if (started) {
System.out.println(\"wait for device inquiry to complete...\");
inquiryCompletedEvent.wait();
System.out.println(devicesDiscovered.size() + \" device(s) found\");
}
}
}
}
有人能发现这两个for循环为何不起作用的任何原因吗?
非常感谢
-瑞安
解决方法
您在我的机器上执行的代码如下:
Bluez上的BlueCove版本2.1.0
等待设备查询完成...
什么?? :[...]
测试是否得到输出
测试:...
设备查询已完成!
找到1台设备
BlueCove堆栈关闭已完成
通过以下“ 1”循环:
for(int i=0; i< devicesDiscovered.size(); i++)
{
System.out.println(\"test if this gets output\");
String test = (String) devicesDiscovered.elementAt(i).toString();
System.out.println(\"Test: \" + test);
}
我注意到您正在测试for
循环中的哪一个正在生成所需的输出。我可以说上面的一个可行,但是第二个例外。您试图将a4ѭ对象投射到List
并对其进行遍历(for(int i=0; i < ((List) btDevice).size(); i++)
)。这就是无法正常工作的原因,因此也是例外。
,在这条线
//Its not executing this....
for(int i=0; i > ((List) btDevice).size(); i++) {
您把>
弄错了方向...试试
for(int i=0; i < ((List) btDevice).size(); i++) {
代替。
(之所以不进行迭代,是因为初始值0不大于列表的大小!)
在您的第一个循环中:
//Its not executing this...
for(int i=0; i< devicesDiscovered.size(); i++) {
System.out.println(\"test if this gets output\");
devicesDiscovered
一定是空的。我建议你做
System.out.println(devicesDiscovered.size());
在循环调试之前。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。