小编Alb*_*rtB的帖子

Kotlin的“ while”控制流中有错误

我在JAVA中有以下代码:

            byte[] data = new byte[1024];
            int count;
            int total = 0;

            while ((count = input.read( data )) != -1) {
                output.write( data, 0, count );
                total += count;
                publishProgress((int) (total * 100 / sizeFichero));

            }
Run Code Online (Sandbox Code Playgroud)

我正在将我的应用更新为Kotlin,但是在WHILE中,我出现了错误。

在这段代码中,出现以下错误:

分配不是表达式,并且在此上下文中仅允许表达式

            val data = ByteArray(1024)
            var count: Int?
            var total = 0
            while ((count = input.read(data)) != -1) {
                output.write( data, 0, count!! )
                total += count!!
                publishProgress((int) (total * 100 / sizeFichero));

            }
Run Code Online (Sandbox Code Playgroud)

任何消除错误的建议。

android while-loop kotlin

3
推荐指数
1
解决办法
172
查看次数

为什么用类似的代码在Java中编译对put()的调用在Kotlin中无法编译

我在Java中具有以下功能,需要将其转换为Kotlin。

@Override
public void afterTextChanged(Editable s) {

    if (s != null && !"".equals(s.toString())) {
        int position = (Integer) mHolder.numEdit.getTag();
        // Saved to the data variable when the data changes
        mData.get(position).put("list_item_inputvalue",
                s.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我创建的等效Kotlin代码:

override fun afterTextChanged(s: Editable?) {

    if (s != null && "" != s.toString()) {
        val position = mHolder.numEdit!!.tag as Int
        // Saved to the data variable when the data changes
        mData?.get(position).put("list_item_inputvalue", s.toString())
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器不喜欢对的调用.put()。Java中的变量mData为:

private List<Map<String, String>> mData;
Run Code Online (Sandbox Code Playgroud)

和科特林:

var mData: List<Map<String, String>>? …
Run Code Online (Sandbox Code Playgroud)

java kotlin

3
推荐指数
1
解决办法
118
查看次数

标签 统计

kotlin ×2

android ×1

java ×1

while-loop ×1