Java编程练习题

本文分享了两道Java编程挑战题的解决方案:一是计算字符串中最后一个单词的长度,二是利用斐波那契数列解决爬楼梯问题。通过实例解析,展示了如何使用Java内置方法如trim()、lastIndexOf()和递归思想解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  曾经,有人说过,没有刷题的人生是不完整的。看了几天Java,我试着做了几道练习题,好让我的人生完整一点。(偷笑……)这里挑了一些题来跟大家分享,本文不定期更新。




题目集


1. 最后一个单词的长度(题目来自:计蒜客

问题:

885580-20170720000610490-334992001.png

分析: 要求字符串中最后一个单词的长度,由于单词间是由空格隔开的,如果字符串末尾没有空格,就可以用字符串最后一个字母的索引减去最后一个空格的位置索引来求。但是要注意的是,此题字符串的首尾均可能存在空格。所以在接收输入的字符串后,要先把字符串尾巴的空格去掉,可以用Sting类里的trim()方法来实现。处理完后再用String类的length()方法去求字符串长度length,length-1即为最后一个字母的位置索引。接下来要得到的的是最后一个空格的位置索引,可以用Sting类里的lastIndexOf(int x)方法来得到,其括号内的参数为int型,所以要查找空格的ASCII码,为32。如果不知道空格对应的ASCII码,也可以用(int)' '通过强制类型转化来得到对应的值。最后,要接受一串可能含有空格的字符串,可以用Scanner类里的nextLine()方法。

代码:

import java.util.Scanner;

public class Main{
   public static void main(String[] args) {
       Scanner scan=new Scanner(System.in);
       int length=1,i=0;
       String str="";
       if(scan.hasNextLine()) {
         str=scan.nextLine();           //接收输入的字符串(可能含有空格)
           str=str.trim();               //去除字符串首部和尾部的空格
           length=str.length();          //返回字符串的长度
       }
       
       i=str.lastIndexOf(32);            //返回最后一个空格的位置索引,空格ASCII码为32
       System.out.println(length-1-i);
   }
}


2. 爬楼梯(题目来自:计蒜客

问题描述:

885580-20170720143234068-1639104244.png

分析:第一遍做的时候想当然的把问题转化为求二元方程x+2y=n的解有几个,提交后发现错了。再想想,发现如果顺序不同那也是不同的方法。比如有三级楼梯,x+2y=3的解只有(3,0)(1,1)两种,但是在(1,1)的情况下,先走一级再走两级和先走两级再走一级是不一样的,所以(1,1)的情况有两种走法,一共是三种。通过自己模拟,发现可以用递归思想来解决,而结果就是跟著名的斐波那契数列,n级楼梯所对应的方法数就是斐波那契数列(从第0项开始)中的第n项(F(n))。所以可以开一个数组a[],存放斐波那契数列数列,对于输入的n,输出a[n]即可。

代码:

import java.util.Scanner;

public class Main{
   public static void main(String[] args) {
       Scanner scan=new Scanner(System.in);
       int n=0;
       int[] ways=new int[51];
       
       if(scan.hasNextInt()) {
           n=scan.nextInt();
       }
       ways[0]=0;
       ways[1]=1;
       ways[2]=2;
       for(int i=3;i<=n;i++) {
           ways[i]=ways[i-1]+ways[i-2];
       }
       System.out.println(ways[n]);
   }  
}


3. XXX

转载于:https://www.cnblogs.com/jiuweilinghu/p/7208991.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值