无法在 Kotlin 的 while 循环中重新分配值

Unable to reassign value in a while loop in Kotlin

提问人:winfred adrah 提问时间:10/23/2023 更新时间:10/24/2023 访问量:42

问:

我正在尝试从套接字连接获取响应。我正在使用 while 循环将字节读入字符串。我声明了一个变量“response”来保存响应,但我无法访问 while 循环之外的变量。

try {
            socket = Socket()
            socket.connect(InetSocketAddress(IP, PORT))
            val out = DataOutputStream(socket.getOutputStream())
            val dataIn = DataInputStream(socket.getInputStream())
            out.writeBytes(sending)
            var ByteIn: Byte
            response = ""
            ByteIn = dataIn.readByte()


            while (true) {
                response += ByteIn.toChar()
                ByteIn = dataIn.readByte()
                Log.d("Response response", response)// I am able to get the response in the loop
                Log.d("ByteIn Byte In", ByteIn.toString())
            }
            Log.d("Response response", response) //I am unable to get the response here
//close the try block and catch various exceptions

我能够在循环中得到响应,但我无法在循环后得到响应。

Android Kotlin while-loop

评论


答:

1赞 Bruno Lima 10/24/2023 #1

您已经声明了两个响应变量,一个在 while 作用域中,另一个在 try 作用域中。

评论

0赞 winfred adrah 10/24/2023
声明在 try catch 块之前,它只在 while 循环之前分配了一个空字符串,并在 while 循环中分配了响应
0赞 Bruno Lima 10/24/2023
有疑问时,请尝试在两个作用域之外定义变量,并查看是否更改了行为。或者使用断点来检查沿工作流中值的变量。