Javascript 将js函数转换为kotlin时出错

Javascript 将js函数转换为kotlin时出错,javascript,kotlin,Javascript,Kotlin,我在javascript的链接中找到了一个根据用户偏好对项目列表进行优先级排序的解决方案: 我试图将其传递给kotlin,但列表项有时会带有相同的值供用户选择 我的Kotlin代码当前为: 但它应该打印: 按照以下顺序:完成家庭作业,完成家务,去购物 在这个转换中我做错了什么?Kotlin作为严格类型系统,不允许int为0或任何false或true。如果需要布尔值,可以使用j-!=0 您可以按以下方式进行工作: 娱乐中心{ val arr=布置家庭作业、完成家务、购物 val结果=插入或需要先做

我在javascript的链接中找到了一个根据用户偏好对项目列表进行优先级排序的解决方案:

我试图将其传递给kotlin,但列表项有时会带有相同的值供用户选择

我的Kotlin代码当前为:

但它应该打印:

按照以下顺序:完成家庭作业,完成家务,去购物


在这个转换中我做错了什么?

Kotlin作为严格类型系统,不允许int为0或任何false或true。如果需要布尔值,可以使用j-!=0

您可以按以下方式进行工作:

娱乐中心{ val arr=布置家庭作业、完成家务、购物 val结果=插入或需要先做什么,arr printlnresult.toList } 趣味PrompInputComparison:String,str1:String,str2:String:String{ println$比较:$str1或$str2?; 返回readLine!! } 有趣的插入或比较:字符串,arr:Array:Array{ printlnarr大小:${arr.size} var len=arr.size 变量i=-1 变量j:Int var-tmp:String 而len-!=0{ tmp=arr[++i]; j=i 当j-!=0&&prompInputComparison时,arr[j],tmp==arr[j]{ arr[j+1]=arr[j]; } arr[j+1]=tmp } 返回arr.apply{reverse} } 具有以下输出/输入情况:

arr size: 3
What needs to be done first: finish homework or finish chores?
>> finish homework
What needs to be done first: finish homework or go shopping?
>> finish homework
What needs to be done first: finish chores or go shopping?
>> finish chores
[finish homework, finish chores, go shopping]

你用j代替了j=0,因此您在arr[j+1]=arr[j]中使用了错误的j值;在j-中更新之前。你的密码。JS代码也可以直接使用Array.prototype.sort,而不是实现自己的排序功能。关于Kotlin不确定。@user4642212 Kotlin不支持while中的j-as条件,因为它返回一个整数而不是布尔值,我已经尝试使用j>0和j=0是的,但我确信Kotlin支持将j-语句放置在正确的位置,或者至少使用j-1。@user4642212在我发布之前,我编写了j-before arr[j+1]=arr[j]Too您的代码也使用相同的PrompInputComparison,arr[j],tmp==arr[j]条件,但没有更新的j。你没有使用递减的j。用j-1替换j的所有用途,或在使用递减j之前放置j- — 以可能的为准。“j-1在短时间内不起作用” — promptInputarr[j-1],tmp==arr[j-1]不工作?!你到底尝试了什么?你知道用一个函数来代替kotlin中的js提示符吗?
I/System.out: arr size
I/System.out: finish homework or finish homework?
I/System.out: finish homework or finish homework?
I/System.out: arr size
I/System.out: finish homework or finish chores?
I/System.out: finish homework or go shopping?
I/System.out: finish chores or go shopping?
arr size: 3
What needs to be done first: finish homework or finish chores?
>> finish homework
What needs to be done first: finish homework or go shopping?
>> finish homework
What needs to be done first: finish chores or go shopping?
>> finish chores
[finish homework, finish chores, go shopping]