题目一:要求写一个方法:method。该方法要求传入一个数字n(n要小于10),该方法能够计算得到所有各位上的数字不超过n切每一位的数字都不重复的三位数的个数。
并且在测试该方法。
/*
我的思路:(注:此题为枚举类的体型,一般枚举类题目都是要通过for循环来解决)
(1) 要求传入一个数字n(n要小于10): 需要用到Scanner类,从键盘获取数字,而且对获取的数字需要进行判断,若小于0或者大于9,需给出提示输入有误,且终止程序。
Scanner sc = new Scanner(System.in);
sout("请输入n的数值:");
int n = sc.nextInt();
if(n<0 || n>9){
sout("输入有误");
break;
}
(2) 得到三位数:通过3个for循环嵌套来确定各个位置上的数字。最外层for循环得到百位的数字,次外层for循环得到各位上的数字,最内层for循环得到各位上的数字。
for(int i=0; i<=n; i++){
int bai = i;
for(int j=0; j<=n; j++){
int shi = j;
for(int k=0; k<=n; k++){
int ge = k;
}
}
}
(3)不重复且互不相同: 从for循环可以看出当i,j,k互不相同时,取到的数字就是不重复切不相同的。
1>可以先确定百位上的数字,但需要注意0不可作未最高为存在,需做判断 if(i==0) continue;
2>在确定十位数字时,需要和百位上的数字进行比较,相等则跳过本次赋值,重新进行赋值。 if(j == i) continue;
3>最后确定个位的数字,这时既需要和百位数字进行比较,还需要和十位数字进行比较,存在相同就跳过,重新进行赋值 if(k == i || k == j) continue;
(4)获取个数:需要定义一个计数变量count来确定个数,初始值设为0。当确定个位上的数字时,就已经生成了一个各个位数字互不相同的数字,这时进行count++;
最后打印输出结果即可。
*/
code:
public class Test3_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入n的值:");
int n = sc.nextInt();
if(n<0 || n>9){
System.out.println("n输入有误!");
return;
}
method(n);
}
public static void method(int n) {
int count = 0;
for(int i=0; i<=n; i++){
if(i == 0){
continue;
}
int num1 = i;
for(int j=0; j<=n; j++){
if(i == j){
continue;
}
int num2 = j;
for(int k=0; k<=n; k++){
if(i==k || k==j){
continue;
}
int num3 = k;
// int sum = num1*100 + num2*10 + num3;
// System.out.print(sum + " ");
count++;
}
}
// System.out.println();
}
System.out.println("一共有" + count + "个!");
}
}
题目2:定义一个方法,传入两个数组,函数中将两个数组不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上;如果没有则输出"对不起两个数组的所有元素均相同。
/*
涉及到String中的: concat() ------ equals() ----- valueOf(int i) ------length()
思路:(有点繁琐)假设 数组A 数组B, 首选定义一个String str = "";(空的字符串用于存储不同元素)
先把数组A的每个元素依此和数组B中的所有元素进行比较(两个for循环嵌套,外层数组A循环,内层数组B循环),当发现A中元素和B中所有元素都不同,加入到字符串中。(需要用到String中的concat()方法)注意:数组AB都是整型,需通过String的valueOf(int)将Int型转换成string型。 ( str.concat( String.valueOf( A ) ); )
再把数组B的每个元素依此和数组A中的所有元素进行比较 ,方法和上述相同。最后返回str。
main方法中需要对接收到的str进行判断,若为空则输出:对不起两个数组的所有元素均相同
*/
code:
public class Test12_2 {
public static void main(String[] args) {
int[] arr1 = {1, 3, 4, 7};
int[] arr2 = {1, 3, 5, 8};
String result = method(arr1, arr2);
if(result.equals("")){
System.out.println("对不起两个数组的所有元素均相同");
}else {
System.out.println("拼接的字符串为:“" + result + "”,长度是:" + result.length());
}
}
public static String method(int[] arr1, int[] arr2){
String str = "";
//将arr1中的每个数依次和arr2中的所有数进行比较,若都不同,加入到字符串中
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
if(arr1 == arr2[j]){
break;
}
if(j == arr2.length-1){
str = str.concat(String.valueOf(arr1));
}
}
}
//将arr2中的每个数依次和arr1中的所有数进行比较,若都不同,加入到字符串中
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr1.length; j++) {
if(arr1 == arr2[j]){
break;
}
if(j == arr1.length-1){
str = str.concat(String.valueOf(arr2));
}
}
}
return str;
}
}
|
|