# java二维数组练习题

### 1、随机生成一个3位以上的整数，获取反转后的值

``````public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//随机生成一个3位以上的整数，获取反转后的值
Random rand = new Random();
int randNum = 100 + rand.nextInt(33333333)
,copy = randNum
,count =0,
reverse = 0;
//最后一位不能是0
while(randNum%10 ==0){
randNum = 100 + rand.nextInt(33333333);
}

while(copy>=1){         //找长度，计算位数  ，当<1时就是小数了，之前是整数。
count ++;
copy /= 10;
}

int BIG_U=(int)Math.pow(10,count-1);  //确定位数   8位数，7个0

copy = randNum;        //因为前面copy除没了，再声明一个
while (count>0){
reverse += (copy%10)*BIG_U;//例如第一个百万位，第二个十万为
copy/=10;//每次拿到除了最后一位的数
BIG_U /=10;//例如第一高位百万，下一个是十万位
count--;
}
System.out.println(randNum);
System.out.println(reverse);
}``````

### 2、有数组：int[] nums = {0,1,2,3,4};让数组的值按如下规则轮询

```//0,1,2,3,4
//1,2,3,4,0
//2,3,4,0,1
//3,4,0,1,2
//4,3,2,1,0
//0,1,2,3,4 //...
```
``````public static void main(String[] args) {
int[] nums = {0,1,2,3,4};
do {
System.out.println(Arrays.toString(nums));
for (int i = 0; i < nums.length; i++) {
nums[i] = (++nums[i])%nums.length;
}
}while (nums!=0);
System.out.println(Arrays.toString(nums));
}``````

3. 句子中的最多单词数

``````public static void main(String[] args) {
String[] words = sentence.split(" ");

//不重复单词数量
int size = 0;
//记录不重复单词
String[] uniquewords = new String[words.length];
//每个单词重复次数，下标要和uniquewords对应
int[] nums = new int[words.length];

//找到唯一单词，并记录其重复次数
for (String word : words) {
int i = 0; //用i的值来确认单词是不是重复的，而且知道重复的下标
while (i<size) {
if (word.equals(uniquewords[i])) {
break;
}
i++;
}
if (i==size) {
nums[size] = 1;
uniquewords[size++] = word;
}else {
nums[i]++;
}
}
System.out.println(Arrays.toString(uniquewords));
System.out.println(Arrays.toString(nums));

//假设一个最大的数字下标为0    找到最大值所在的下标
int maxNumIx=0;
for (int i = 1; i < size; i++) {
if (nums[i]>nums[maxNumIx]){
nums[maxNumIx]=nums[i];
}
}
//万一最大的数值有重复
//找到最大值重复的所有下标
int [] maxNumIxs = new int[size];
int sizeMax = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[maxNumIx]==nums[i]) {
maxNumIxs[sizeMax++] = i;
}
}
System.out.println("最多重复"+nums[maxNumIx]+"的单词为:");
for (int i = 0; i < sizeMax; i++) {
System.out.println(uniquewords[maxNumIxs[i]]);
}
}``````