1.字符串最后一个单词的长度
描述
对于给定的若干个单词组成的句子,每个单词均由大小写字母混合构成,单词间使用单个空格分隔。输出最后一个单词的长度。
输入描述:
在一行上输入若干个字符串,每个字符串代表一个单词,组成给定的句子。
除此之外,保证每个单词非空,由大小写字母混合构成,且总字符长度不超过 103103 。输出描述:
在一行上输出一个整数,代表最后一个单词的长度。
示例1
输入:
HelloNowcoder复制输出:
13复制说明:
在这个样例中,最后一个单词是 "HelloNowcoder""HelloNowcoder" ,长度为 1313 。示例2
输入:
A B C D复制输出:
1
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String line = in.nextLine();//hasNext 判断是否还有内容 用于无长度输入
//nextLine 获取一行String
String[] words = line.split(" "); //以空格分隔
String last = words[words.length - 1 ];
System.out.println(last.length());
}
}
2.HJ2 计算某字符出现次数
描述
对于给定的由大小写字母、数字和空格混合构成的字符串 s ,统计字符 c 在其中出现的次数。具体来说:
∙ ∙若 c 为大写或者小写字母,统计其大小写形态出现的次数和;
∙ ∙若 c 为数字,统计其出现的次数。
保证字符 c 仅为大小写字母或数字。输入描述:
第一行输入一个长度 1≦length(s)≦1031≦length(s)≦103 ,由大小写字母、数字和空格混合构成的字符串 s 。保证首尾不为空格。
第二行输入一个字符 c ,代表需要统计的字符。输出描述:
在一行上输出一个整数,代表字符 c 在字符串 s 中出现的次数。
示例1
输入:
HELLONowcoder123 o复制输出:
3复制说明:
由于 o 为小写字母,因此统计其小写形态出现的次数和,即 33 。示例2
输入:
H E L L O Nowcoder123 1复制输出:
1
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String a = in.nextLine();//临时
char c = 0;
if(a.trim().isEmpty()){//判断第二行是否为空格
System.out.println("error");
return;
}
c = a.charAt(0);
int count = 0;
if(Character.isLetter(c)){//判断字母
for(char ch : s.toCharArray()){
if(Character.toLowerCase(c) == Character.toLowerCase(ch)) count++;//转小写统计字母数
}
System.out.println(count);
return;
}
if(Character.isDigit(c)){//判断数字
for(char ch : s.toCharArray()){
if(c == ch) count++;
}
System.out.println(count);
return;
}
System.out.println("error");
}
}
Tips
hasNext()
用途:检查是否有更多的“单词”或“部分”可以读取。
怎么工作的:它会跳过空格、换行符等空白字符,找到下一个完整的“单词”或“部分”。这里的“单词”是指由空格或其他分隔符分开的文本片段。
适用场景:当你想逐个读取输入中的单词或特定分隔符分隔的部分时使用。比如,从一个句子中逐个读出单词。hasNextLine()
用途:检查是否还有完整的行可以读取。
怎么工作的:它根据换行符(按下回车键产生的)来判断一行的结束。每次调用都会读取直到遇到换行符为止的所有内容作为一个整体。适用场景:当你想逐行读取输入时使用。例如,从一篇文章或者用户输入的多行文本中一行一行地读取内容。
简单例子
假设输入是:
Hello World
How are you?使用 hasNext() 和 next(),你会依次得到 "Hello" 和 "World" 作为两个独立的读取结果,然后是 "How", "are", "you?"。
使用 hasNextLine() 和 nextLine(),你会首先得到 "Hello World" 作为一个整体,然后是 "How are you?",每个都是单独的一次读取结果。每次调用
nextLine()
都会消耗掉输入流中的当前行,并将扫描器的内部指针移动到下一行。因此,随着每一行被读取和处理,程序能够继续检查并处理后续的行,直到所有输入都被读取完毕。当没有更多的行可供读取时(比如达到文件末尾或输入流关闭),hasNextLine()
将返回false
,循环结束。