今天学习的是数组,然后有一些题,不知道是短路了还是怎么了,题目其实并不难,但是也写了好一段时间,记录一下。
题目1
题目
编写一个程序随机产生10个0到50之间的整数并且这些整数不能重复出现。
实现代码
import java.util.Arrays;
import java.util.Random;
public class array_t {
public static void main(String[] args) {
Random r = new Random();
int[] arr = new int[10];
boolean flag = true;
int i = 0;
while(i < 10){
while(flag) {
arr[i] = r.nextInt(50);
for (int j = i - 1; j >= 0; j--) {
if (arr[i] == arr[j]) {
flag = false;
}
}
if(flag == false){//此处的if-else 语句在思路中有解析
flag = true;
continue;
}
else if(flag == true){
flag = false;
break;
}
}
flag = true;
i++;
}
System.out.println(Arrays.toString(arr));
}
}
思路
其实这道题并不是很难,但是我在写循环的时候还是写了很久。上边我的方法是先生成数据,然后把这个数据与之前已经生成的数据进行比较,如果是重复的话,就重新生成。
if(flag == false){//这里的意思是上边如果出现有数据相等的情况,就置了flag为false
flag = true;//此处置flag = true是为了继续重新生成随机数的循环
continue;
}
else if(flag == true){//这里的意思是并未出现数据相等的情况
flag = false;//将flag置为false结束循环,其实直接用下边的break也可以,就不需要这条语句了
break;
}
题目2
题目
二维数组
要求:使用二维数组存储下表的字符串数据。
实现代码
import java.util.Arrays;
public class array_si {
public static void main(String[] args) {
String[][] arr = new String[9][];
for (int i = 0; i < arr.length; i++) {
arr[i] = new String[i + 1];
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
String temp = String.format("%d * %d = %d",(j + 1),(i + 1),(j + 1)*(i + 1));
arr[i][j] = temp;
}
}
for (String[] a:arr) {
System.out.println(Arrays.toString(a));
}
}
}
思路
这个程序中的二维数组是进行动态创建的,也就是该数组中的定义长度都是不一样的,第一行的一维数组为一个空间,第二行的一位数组为两个空间……以此类推
值得一提的是我没有用过的两个语句
String temp = String.format("%d * %d = %d",(j + 1),(i + 1),(j + 1)*(i + 1));
arr[i][j] = temp;
这里的字符串是格式化创建的,也是创建这个九九乘法表的关键,要不然创建String就会很麻烦。
主要就学习到了这一个String.format的主要作用。