Java简单编程题:大小写转换、兔子生兔子问题、狼追兔子问题、判断英文句子。

1.大小写转换

输入一串字母
1.将大写转换为小写,小写转换为大写
2.将其全转换为小写
3.将其全转换为大写

import java.util.Scanner;

public class Conversion {
	public static void main(String[] args) {
		//输入一串字母
		//1.将其全转换为小写
		//2.将其全转换为大写
		//3.将大写转换为小写,小写转换为大写
		
		System.out.println("enter a string:");
		Scanner sc=new Scanner(System.in);
		//输入一串字符
		String s=sc.nextLine();
		char[] arr=new char[s.length()];
		//将这串字符保存到字符数组中
		//因为无法直接对s.charAt(i)进行操作
		for(int i=0;i<arr.length;i++){
			arr[i]=s.charAt(i);
		}
		//大小写互换
		//大小写字母之间相差32
		for(int i=0;i<arr.length;i++){
			if(arr[i]>='A'&&arr[i]<='Z'){
				arr[i]+=32;
			}else{
				arr[i]-=32;
			}
		}
		printArr(arr);
		//全部转换为大写
		for(int i=0;i<arr.length;i++){
			if(arr[i]>='a'&&arr[i]<='z'){
				arr[i]-=32;
			}
		}
		printArr(arr);
		//全部转换为小写
		for(int i=0;i<arr.length;i++){
			if(arr[i]>='A'&&arr[i]<='Z'){
				arr[i]+=32;
			}
		}
		printArr(arr);
	}
	//输出字符串
	public static void printArr(char[] arr){
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]);
		}
		System.out.println();
	}
}

运行结果

enter a string:
Hello World
hELLO

2.兔子生兔子问题

兔子生兔子问题(斐波那契数列:1、1、2、3、5、8、13……)
f(n)=f(n-1)+f(n-2)
输入一个月份,输出从第一个月到这个月之间每个月的兔子数量

import java.util.Scanner;

public class FibonacciSeries {
	public static void main(String[] args) {
		//兔子生兔子问题(斐波那契数列:1、1、2、3、5、8、13……)
		//f(n)=f(n-1)+f(n-2)
		//输入一个月份,输出从第一个月到这个月之间每个月的兔子数量
		
			Scanner sc=new Scanner(System.in);
			System.out.println("enter a month");
			//输入一个月份
			int month=sc.nextInt();
			//计算每个月兔子的数量并输出
			for(int i=1;i<=month;i++){
				int number=fibonacci(i);
				System.out.printf("month%d:%d\n",i,number);
			}
	}
	//运用递归计算第n个月兔子的数量
	public static int fibonacci(int n){
		if(n==1||n==2){
			return 1;
		}else{
			return fibonacci(n-1)+fibonacci(n-2);
		}
	}
}

运行结果

enter a month
12
month1:1
month2:1
month3:2
month4:3
month5:5
month6:8
month7:13
month8:21
month9:34
month10:55
month11:89
month12:144

3.狼追兔子问题

狼追兔子问题
有环形分布的十个洞,一只兔子躲在其中一个洞中,
狼在第一个洞中没有找到兔子,就到第三个洞中去找,
在第三个洞中没有找到,就到第六个洞中去找,
然后是第十个、第十五个、第二十一个,依次类推,
但并没有第十五个、第二十一个洞,实际上是第五个、第一个,
结果一直找不到兔子,问:兔子可能在哪个洞中?
因为程序无法真的运行无数次再输出结果,所以此处运行100次。

public class WolfChasingRabbit {
	public static void main(String[] args) {
		//狼追兔子问题
		/* 有环形分布的十个洞,一只兔子躲在其中一个洞中,
		 * 狼在第一个洞中没有找到兔子,就到第三个洞中去找,
		 * 在第三个洞中没有找到,就到第六个洞中去找,
		 * 然后是第十个、第十五个、第二十一个,依次类推,
		 * 但并没有第十五个、第二十一个洞,实际上是第五个、第一个,
		 * 结果一直找不到兔子,问:兔子可能在哪个洞中?
		 * 因为程序无法真的运行无数次再输出结果,所以此处运行100次。
		 */
		
		//用一个数组来表示十个洞的情况
		boolean[] hole=new boolean[10];
		//用来表示下一个洞的号码
		int wolf=0;
		for(int i=0;i<100;i++){
			//被狼找过的洞标记为true
			hole[wolf]=true;
			wolf+=(i+1);
			//因为是在十个洞中循环寻找所以对十取余
			wolf%=10;
		}
		//判断数组十个元素是否被改为true(布尔型数组默认值为false)
		for(int j=0;j<hole.length;j++){
			//如果是false,说明没有被标记过,则输出
			if(!hole[j]){
				//j为索引,要表示洞的号码要加一
				System.out.println("兔子可能在第"+(j+1)+"个洞中");
			}
		}
	}
}

运行结果

兔子可能在第3个洞中
兔子可能在第5个洞中
兔子可能在第8个洞中
兔子可能在第10个洞中

4.判断英文句子

输入任意一段英文句子判断句子中有几个单词、字母、标点符号

import java.util.Scanner;

public class NumberOfWords {
	public static void main(String[] args) {
		//输入任意一段英文句子判断句子中有几个单词、字母、标点符号
		
		System.out.println("enter a sentence:");
		//输入一个句子
		Scanner sc=new Scanner(System.in);
		//接收一串字符以回车结束
		String s=sc.nextLine();
		//记录原始空格数量(真实的空格数量)
		int count5=0;
		for(int i=0;i<s.length();i++){
			if(s.charAt(i)==' '){
				count5++;
			}
		}
		//去除字符串中首尾的空格并接收
		String ss=s.trim();
		//用于记录字符串间的有效空格数量
		//有效空格:后面跟的是字母
		int count1=0;
		//用于记录字符串中标点符号数量
		int count2=0;
		//用于记录字符串中有效标点符号数量
		//有效标点符号:后面跟的是字母
		int count3=0;
		//用于记录字符串间的空格数量
		int count4=0;
		for(int i=0;i<ss.length();i++){
			//是空格,则空格记录加一
			if(ss.charAt(i)==' '){
				count4++;
			}
			//是空格,且后一个字符为字母,有效空格记录加一
			if(ss.charAt(i)==' '){
				//(i+1)!=ss.length()是为了防止索引越界
				if((i+1)!=ss.length()&&(ss.charAt(i+1)>='A'&&ss.charAt(i+1)<='z')){
					count1++;
				}
			}
			//既不是空格也不是字母,标点符号记录加一
			if(ss.charAt(i)!=' '&&(ss.charAt(i)<'A'||ss.charAt(i)>'z')){
				count2++;
				//既不是空格也不是字母,且后一个字符是字母,有效标点符号记录加一
				if((i+1)!=ss.length()&&ss.charAt(i+1)>='A'&&ss.charAt(i+1)<='z'){
					count3++;
				}
			}
		}
		//单词数量为:有效空格数量加有效标点数加一
		System.out.printf("有%d个单词\n",(count1+1+count3));
		//字母数量为:字符串长度减空格数量再减标点符号数量
		System.out.printf("有%d个字母\n",(ss.length()-count4-count2));
		System.out.printf("有%d个空格\n",count5);
		System.out.printf("有%d个标点符号\n",count2);
	}
}

运行结果1

enter a sentence:
 Hello! I am a student.5个单词
有16个字母
有5个空格
有2个标点符号

运行结果2

enter a sentence:
 Hello ! I am a student .5个单词
有16个字母
有7个空格
有2个标点符号
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值