一、大小写字母转换
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String str = sc.nextLine();
char[] nums = str.toCharArray();
for (int i = 0; i < nums.length; i++) {
if(nums[i]<=91 && nums[i] >=65){
nums[i] = (char) (nums[i] + 32);
continue;
}
if(nums[i] >= 97 && nums[i]<=123){
nums[i] = (char) (nums[i] - 32);
continue;
}
}
for (char num : nums) {
System.out.print(num);
}
}
二、回文数判断回文数输入n,若不是回文数,则将n反转和n求和得到新的n,再判断n是否为回文数,问几次这样的操作可以使得最开始的n变成回文数。注意 ,判断回文数只要翻转 后时候与源数字一样即可判断
public static void main(String[] args) {
//二、回文数判断回文数输入n,若不是回文数,则将n反转和n求和得到新的n,再判断n是否为回文数,
// 问几次这样的操作可以使得最开始的n变成回文数。
// 注意 ,判断回文数只要翻转 后时候与源数字一样即可判断
Scanner sc = new Scanner(System.in);
char[] shuzu = sc.nextLine().toCharArray();
boolean flag = isFlag(shuzu);
if(flag){
System.out.println("是回文数");
}else {
int num = bianChengHuiWen(shuzu,0);
System.out.println(num);
}
}
//把数字变成回文数,用递归
private static int bianChengHuiWen(char[] shuzu,int num) {
num++;
String str = "";
String str1 = "";
for (char c : shuzu) {
str = c+str;
str1 = str1+c;
}
int i = Integer.parseInt(str);
int j = Integer.parseInt(str1);
int sum1 = i+j;
String sum = sum1+"";
if(isFlag(sum.toCharArray())){
return num;
}else {
int a= bianChengHuiWen(sum.toCharArray(),num);
return a;
}
}
// 判断是不是回文数
private static boolean isFlag(char[] shuzu) {
boolean flag = true;
for(int i = 0; i< shuzu.length/2; i++){
if(shuzu[i] != shuzu[shuzu.length-1-i]){
flag = false;
break;
}
}
return flag;
}
三、约瑟夫环---递归的方法有点抽象,用标记数组实现时也要注意怎么运算。
public static void main(String[] args) {
//三、约瑟夫环
boolean[] nums = new boolean[32];
int n = 0;//个数
int i = 1;//下标
while(n!=15){//没找到15个不出来
int s = i % 31;//s能保证一定在30以内
if(s == 0){ // 不要0
s= s+1;
}
int k = 1; // k步长
while(k <= 9){ // k 等于九的时候出来
if(!nums[s]){ //保证这个数没有输出过
if(k == 9) break;
k++;//没有输出过则走一步有效,并且s++
while (nums[s+1]){
s++;
}
if(s == 0){
s= s+1;
} else s++;
}else{//走一步没用,但是我要下标继续动
s++;
}
s = s % 30;
}
if(s == 0){
s= 30;
}
nums[s] = true;
System.out.print(s+ " ");
n++;
i = s;
}
}