Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要再次从Inputstream读取数据的帮助吗_Java_Inputstream_Lejos Nxj - Fatal编程技术网

Java 需要再次从Inputstream读取数据的帮助吗

Java 需要再次从Inputstream读取数据的帮助吗,java,inputstream,lejos-nxj,Java,Inputstream,Lejos Nxj,昨天我发布了一个关于输入流阅读的问题,我得到了帮助 我发现自己处于类似的情况,但这次我知道我做的是正确的事情,但这对我来说并不奏效 我正在从输入流读取数据,但得到的值不同。无论我如何更改发送的数据,我都会得到与值相同的字符串toworklift-42。起初,我将发送的值作为toForklift的前缀,但我已将该字符串更改为不同的字符串,但在括号中得到了相同的字符串。我甚至把数字42改成了一个不同的数字,但是当我运行程序时,我在控制台中得到了相同的字符串。以下是我发送的信息:as 发送和接收两个类

昨天我发布了一个关于输入流阅读的问题,我得到了帮助

我发现自己处于类似的情况,但这次我知道我做的是正确的事情,但这对我来说并不奏效

我正在从输入流读取数据,但得到的值不同。无论我如何更改发送的数据,我都会得到与值相同的字符串toworklift-42。起初,我将发送的值作为toForklift的前缀,但我已将该字符串更改为不同的字符串,但在括号中得到了相同的字符串。我甚至把数字42改成了一个不同的数字,但是当我运行程序时,我在控制台中得到了相同的字符串。以下是我发送的信息:as

发送和接收两个类

我使用leJOS NXJ NXTConnector建立连接并打开流

// sender class

class PanButton implements Runnable {

    DataInputStream dis;
    DataOutputStream dos;
    TouchSensor touch = new TouchSensor(SensorPort.S4);





    PanicButtonCrossing(DataInputStream is, DataOutputStream os) {
    dos = os;
    dis = is;
    }

    public void run() {

        while (!touch.isPressed())  {}

            // If you get a message: KILL EVERYTHING    
            Motor.A.stop();
            Motor.B.stop();
            Motor.C.stop();

            try { // send 42
                int value = 42;

                dos.writeChars("ggggggggg" + 455 + "\n"); 
                dos.flush();
                Sound.systemSound(true, 3);
            } catch (IOException ioe) {
                LCD.drawString("Write Exception", 0, 0);
            }

            System.exit(1);


}






// Reader classs



public class InputReaderCrossing  implements Runnable{


      private DataInputStream dataIn;
      private DataOutputStream dataOut;

public InputReaderCrossing(DataInputStream dataIn, DataOutputStream dataOut) {
            this.dataIn = dataIn;
            this.dataOut = dataOut;
            this.sensor = sensor;
            this.readLock = new Object();

        }


public void run(){

while(true){

String dataFromCrossing1 = readLineFromCrossing();
System.out.println("CROSSING VALUE: " + dataFromCrossing1  + "  :VALUEEEEE");
}

}

private String readLineFromCrossing() throws IOException{ 
              StringBuffer sb = new StringBuffer(); 

              synchronized(readLock){ 
                 while(true) { 
                    char c = this.dataIn.readChar(); 
                    if (c == '\n') break; 
                    sb.append(c);
                 }
                 return sb.toString(); 
              } 
           }


}
我需要你的帮助。我已经花了6个小时,但找不到原因。我不明白,不管我送什么我都要去工作电梯-42

起初,我尝试使用writeInt方法发送42,但在reader类方面,我使用readInt,但得到了如下结果:

745687894
459877455
456987456
所以我改成了字符串,以找出原因,瞧,无论我发送什么,我都能得到字符串。这就像字符串在输入流中是固定的,没有发送任何内容。我不知道发生了什么事


需要帮助这是一个非常令人困惑的问题。我们真的不知道哪个进程正在写入哪些数据,它是如何传输的,哪个进程正在接收数据。这里有一些相关的代码,但是我没有看到足够的代码来讲述这个故事。来自Crossing1的数据是如何获得其值的

我认为把你的问题组织起来,这样你就可以向一个局外人提出一个关于它的问题。可能在这样做的过程中,你自己也会偶然发现解决方案

原则上,如果您正在更改程序中的字符串常量,但仍然看到相同的输出,那么发生的情况就是这样

原程序仍在运行;或 自原始版本以来的所有版本都有错误,因此您曾经成功编译的类文件正在一次又一次地运行;或 你并不是真的在运行你认为正在运行的程序。
目前,我不知道您的应用程序将从何处获得ToWorklift-from字符串。您定义的int变量int value=42;根本不用。您发送的唯一字符串是ggggggggg+455+\n,我强烈希望收到该字符串。我也是,但我没有收到该字符串。现在很奇怪。我有意将42改为455,看看它是否能工作,但它不能。谢谢你的回复。那个字符串,尤其是单词叉车,不会突然出现。。。在整个项目中搜索它。要么是我从未使用过的NXT框架将其写入流中,要么是你的应用程序在代码中的某个点写入流中。是的,使用哪种方法?描述赋值的代码行不在任何方法或初始值设定项中。复制/粘贴代码以使其不可读。