华为求输入字符串最后一个单词长度问题~~~~

yogurtttt- 2016-08-05 11:31:27
import java.util.*;
class test{
public static void main(String args[]){
System.out.print("请输入一个字符串:");

Scanner aaa = new Scanner(System.in);

String bbb = aaa.nextLine();
int num=0;
int i = bbb.length();

char aa = bbb.charAt(0);

if(i==1 && aa!=' '){
System.out.println(1);}
else{

for(int j=i-1;j>0;j--){
char a = bbb.charAt(j);
num++;
if(a==' '){num-=1;j=-1;}
}System.out.println("该字符串最后一个单词长度为:"+num);}


}
}
请教各位大神 我的这个程序系统总显示测试样例未完全通过,问题出在哪里?
...全文
340 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZeroStars_L 2016-08-06
  • 打赏
  • 举报
回复
引用 2 楼 u011128219 的回复:
[quote=引用 1 楼 ZeroStars_L 的回复:] 我运行了一下你的程序发现了点问题:当字符串以空格结尾的时候,你的程序返回字符串长度就是0.题目要求是求最后一个单词的长度,应该是要你忽略空格的影响。我的思路是对输入的字符串按照空格来切割成字符串数组,直接返回数组最后一个元素的长度就是最后一个单词的长度。代码如下: public class Demo3 { public static void main(String[] args){ System.out.println("请输入字符串:"); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); String[] arr = str.split(" "); String str1 = arr[arr.length-1]; System.out.println("最后一个单词的长度是:"+str1.length()); } } 希望能有用
看到楼主的问题 我第一下反应想到的逻辑就是跟1楼的一样 后来又想了想,发现两个问题, 1..如果人家输入的字符串就只有一个单词,如果以空格进行分割,分割得到的字符串数组长度就为0了,所以假若要以“空格”分割字符串数组,分割后要判断长度是否为0,是就代表一个单词而已,否则返回数组最后一个单词的长度 2..难道,,人家输入的字符串一定以“”空格“”分割?,,,如果是”逗号“呢? [/quote] 1.字符串只有一个单词,那么就不会进行切割,返回的就是该单词的长度 2.这一点应该是要用到正则表达式,我想了下没想通。楼上的那位大哥的代码感觉应该更好些。
ZeroStars_L 2016-08-05
  • 打赏
  • 举报
回复
我运行了一下你的程序发现了点问题:当字符串以空格结尾的时候,你的程序返回字符串长度就是0.题目要求是求最后一个单词的长度,应该是要你忽略空格的影响。我的思路是对输入的字符串按照空格来切割成字符串数组,直接返回数组最后一个元素的长度就是最后一个单词的长度。代码如下: public class Demo3 { public static void main(String[] args){ System.out.println("请输入字符串:"); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); String[] arr = str.split(" "); String str1 = arr[arr.length-1]; System.out.println("最后一个单词的长度是:"+str1.length()); } } 希望能有用
rickylin86 2016-08-05
  • 打赏
  • 举报
回复

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
	public static void main(String[] args){
		Scanner keyboard = new Scanner(System.in);
		System.out.print("输入内容:");
		String content = keyboard.nextLine();
		String regex = "(?i)(?<=^|[^a-z])([a-z]+)(?=$|[^a-z])(?!.*?[a-z])";//单词只能包含大写字母或者小写字母
		Matcher matcher = Pattern.compile(regex).matcher(content);
		String result = null;
		if(matcher.find()){
			result = matcher.group();
		}
		
		if(result != null){
			System.out.printf("'%s' 的最后一个单词 '%s' 长度是:%d.\n",content,result,result.length());
		}else{
			System.out.printf("'%s' 不包含单词.\n",content);
		}

	}
}
tantaiqiguan 2016-08-05
  • 打赏
  • 举报
回复
再对最后一个字符串进行,分割
_Kem 2016-08-05
  • 打赏
  • 举报
回复
引用 1 楼 ZeroStars_L 的回复:
我运行了一下你的程序发现了点问题:当字符串以空格结尾的时候,你的程序返回字符串长度就是0.题目要求是求最后一个单词的长度,应该是要你忽略空格的影响。我的思路是对输入的字符串按照空格来切割成字符串数组,直接返回数组最后一个元素的长度就是最后一个单词的长度。代码如下: public class Demo3 { public static void main(String[] args){ System.out.println("请输入字符串:"); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); String[] arr = str.split(" "); String str1 = arr[arr.length-1]; System.out.println("最后一个单词的长度是:"+str1.length()); } } 希望能有用
看到楼主的问题 我第一下反应想到的逻辑就是跟1楼的一样 后来又想了想,发现两个问题, 1..如果人家输入的字符串就只有一个单词,如果以空格进行分割,分割得到的字符串数组长度就为0了,所以假若要以“空格”分割字符串数组,分割后要判断长度是否为0,是就代表一个单词而已,否则返回数组最后一个单词的长度 2..难道,,人家输入的字符串一定以“”空格“”分割?,,,如果是”逗号“呢?

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧