Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Arrays 比较数字并将其保存在Kotlin中的数组中_Arrays_Kotlin_Compare - Fatal编程技术网

Arrays 比较数字并将其保存在Kotlin中的数组中

Arrays 比较数字并将其保存在Kotlin中的数组中,arrays,kotlin,compare,Arrays,Kotlin,Compare,第二部分问题 第一部分-我想让用户给出一个数字,然后创建一个数组,数组中的位置与所引入的数字一样多,我该怎么做 第二部分-数组将填充随机数,但我不希望重复数。这是我的代码,它不断注册重复的号码 var A = intArrayOf(0,0,0,0,0,0) for (i in 0..A.size - 1) { val rnd = (0..10).random() for (j in 0..A.size-1) { if (rnd == A[j]){

第二部分问题

第一部分-我想让用户给出一个数字,然后创建一个数组,数组中的位置与所引入的数字一样多,我该怎么做

第二部分-数组将填充随机数,但我不希望重复数。这是我的代码,它不断注册重复的号码

var A = intArrayOf(0,0,0,0,0,0)
for (i in 0..A.size - 1) {
    val rnd = (0..10).random()
    for (j in 0..A.size-1) {
        if (rnd == A[j]){
            break
        }
        else{
            A[i] = rnd
            break
        }
    }
}

我做错了什么?

您可以向用户询问阵列项目的数量,如下所示:

var n = 0

println("Number of items in the array = ")
try {
    n = readLine()!!.toInt()
} catch (e: Exception) {
}
现在,如果
n
为正整数,则数组将初始化,然后填充随机非重复整数:

if (n > 0) {
    val array = IntArray(n) // initialize an array of n items all being 0

    val r = Random() // create a random numbers generator
    array.indices.forEach {
        var newInt = 0
        while (array.contains(newInt)) { newInt = r.nextInt() }
        array[it] = newInt
    }
    array.forEach { print("$it ") }
}
使用
contains()
可以检查数组中是否已经存在新生成的随机数(这意味着数组将填充非零整数)。
如果希望随机数在特定范围内,则不要:

newInt = r.nextInt()
使用:

或对于Kotlin版本1.3+:

newInt = (lowerBound..upperBound).random()

您可以向用户询问阵列项目的数量,如下所示:

var n = 0

println("Number of items in the array = ")
try {
    n = readLine()!!.toInt()
} catch (e: Exception) {
}
现在,如果
n
为正整数,则数组将初始化,然后填充随机非重复整数:

if (n > 0) {
    val array = IntArray(n) // initialize an array of n items all being 0

    val r = Random() // create a random numbers generator
    array.indices.forEach {
        var newInt = 0
        while (array.contains(newInt)) { newInt = r.nextInt() }
        array[it] = newInt
    }
    array.forEach { print("$it ") }
}
使用
contains()
可以检查数组中是否已经存在新生成的随机数(这意味着数组将填充非零整数)。
如果希望随机数在特定范围内,则不要:

newInt = r.nextInt()
使用:

或对于Kotlin版本1.3+:

newInt = (lowerBound..upperBound).random()

需要记住的一件事是,如果您试图在某个范围内生成随机数,但没有重复数,则需要确保随机数的范围至少等于目标数组的大小

例如,如果您试图生成一个大小为12、范围为0到10的数组,则无法生成,因为只有11种可能

根据您的要求(距离数组大小只有0吗?)

/**
 * Generates an array of unique random numbers between zero and the larger of
 * arraySize or upperBound. If upperBound is not specified, it defaults to be
 * arraySize.
 *
 * @param arraySize the size of the returned integer array
 * @param upperBound an optional upper bound for the range of random numbers
 */
fun generateArray(arraySize: Int, upperBound: Int = size): IntArray {
  return (0..Math.max(upperBound, arraySize)).shuffled().take(arraySize).toIntArray()
}

这还可以避免浪费生成丢弃的重复随机数,并确保函数调用的执行时间具有确定性。

要记住的一件事是,如果您试图在一定范围内生成随机数,但没有重复数,您需要确保随机数的范围至少等于目标数组的大小

例如,如果您试图生成一个大小为12、范围为0到10的数组,则无法生成,因为只有11种可能

根据您的要求(距离数组大小只有0吗?)

/**
 * Generates an array of unique random numbers between zero and the larger of
 * arraySize or upperBound. If upperBound is not specified, it defaults to be
 * arraySize.
 *
 * @param arraySize the size of the returned integer array
 * @param upperBound an optional upper bound for the range of random numbers
 */
fun generateArray(arraySize: Int, upperBound: Int = size): IntArray {
  return (0..Math.max(upperBound, arraySize)).shuffled().take(arraySize).toIntArray()
}
这还可以避免浪费生成被丢弃的重复随机数,并确保函数调用的执行时间具有确定性