我正在学习Java课。我似乎很难弄清楚我想如何解决这个问题的算法。
当前,我需要创建和应用程序,通过将其索引与索引的各个数字相加来生成要存储在数组元素中的数字。例如,索引为17的元素应存储为25 ...(17 + 1 + 7 = 25),索引为2的元素应存储为4(2 + 0 + 2 = 4)。我需要程序具有101个元素,然后显示每个值。
我似乎很难弄清楚我要如何解决这个问题的算法。在这方面的任何协助将不胜感激。 提前致谢。我目前仍在研究此问题,并且仍在学习编码,所以请多多包涵。
这是我到目前为止提出的更新代码
import java.util.Random;
public class Java_Lab_4 {
public static void main(String[] args) {
int size = 101;
int max = 101;
int[] array = new int[size];
int loop = 0;
Random generator = new Random();
//Write a loop that generates 101 integers
//Store them in the array using generator.nestInt(max);
generator.nextInt(max);
for (int i = 0; i<101; i++)
{
generator.nextInt(max);
}
}
答案 0 :(得分:1)
肯定有很多方法可以实现这一目标,但是最简单的方法是将其重复除以10(另一种方法是模运算,将索引取模10)。
这意味着您将获得以下算法:
int n = i; // i is the index of the current item
while (n > 0) {
int x = n;
if (x > 10) { // we need to deal with the case where i is small
x = n / 10;
}
while (x > 10) { // necessary because we may be dealing with an index > 100
x = x / 10;
} // at this point we have the first digit of the index
a[i] += x; // add this digit to a[i]
n = n / 10; // get rid of the above digit in the calculation. Note that if n < 10, integer division means that n / 10 == 0
} // at the end of this loop, we have added all digits of i to a[i]
a[i] += i; / now we only need to add the index value itself
有很多方法可以解决此问题,这是一种非常直接且基本的方法。我添加了很多注释,但是请尝试遍历代码以了解为什么起作用,而不仅仅是复制它。
答案 1 :(得分:0)
不发布完整的代码-因为这是一项任务-这里需要考虑一些事项:
array[a] = a + a;
将为您提供a < 10
索引的解决方案。对于两个/三个数字的索引,您需要使用
int nthDigit = Integer.parseInt( // Finally, converts the single-char String to an int
String.valueOf( // converts the char matching the digit to a String
String.valueOf(a).charAt(n))); // converts 'a' first to a String and
// then takes its 'n'th character
其中n
为0、1或2。然后需要将这些值添加到索引(a
)的值中。