基础题目
第一题:需求实现
-
反转键盘录入的字符串。
-
代码实现,效果如图所示:
-
开发提示:
- 使用字符数组保存原始字符,利用Random类生成随机索引。
-
参考答案:
public class Test1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
System.out.println("录入的字符串:" + next);
String s = reverseStr(next);
System.out.println("反转的字符串:"+ s);
}
public static String reverseStr(String str){
String s = "";
char[] chars = str.toCharArray();
for (int i = chars.length - 1; i >= 0; i--) {
s +=chars[i] ;
}
return s;
}
}
第二题:需求实现
-
键盘录入QQ号码,验证格式的正确性。
- 必须是5—12位数字。
- 0不能开头。
-
代码实现,效果如图所示:
-
参考答案:
public class Test2 {
public static void main(String[] args) {
//1.键盘输入一个qq号码字符串
Scanner sc = new Scanner(System.in);
String qq = sc.next();
//2.调用checkQQ (String qq)方法内实现验证。
boolean isOK = checkQQ(qq);
//3.打印验证的结果
System.out.println("这个QQ号码是否正确:" + isOK);
}
/*
* 定义方法:checkQQ (String qq)方法内实现验证
* 指定方法的名称:checkQQ
* 指定方法的参数:String qq
* 指定方法的返回值:boolean
*/
public static boolean checkQQ(String qq){
//1.验证字符串的长度5-12位之间;
if (qq.length()<5 || qq.length()>12 ) {
return false; //说明qq号码的长度不正确
}
//2.验证首位字符不能是字符0;只能是字符'1'--'9'
if (qq.charAt(0) == '0') {
return false;
}
//3.验证字符串中的每个字符都必须是数字字符‘0’-‘9’之间的字符
for (int i = 0; i < qq.length(); i++) {
char ch = qq.charAt(i);
//判断字符是否在 数字字符‘0’-‘9’之间的字符
if (ch<'0' || ch>'9') {
return false;//说明qq号码中含有非数字字符
}
}
//4.上述验证都通过了,说明qq号码是正确的
return true;
}
}
第三题:需求实现
-
字符串查找。
- 键盘录入一个大字符串,再录入一个小字符串。
- 统计小字符串在大字符串中出现的次数。
-
代码实现,效果如图所示:
-
参考答案:
public class Test3 {
/*
* 分析以下需求,并用代码实现
1.键盘录入一个大字符串,再录入一个小字符串
2.统计小字符串在大字符串中出现的次数
3.代码运行打印格式:
请输入大字符串:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
请输入小字符串:heima
控制台输出:小字符串heima,在大字符串woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma中共出现3次
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1.键盘录入一个大字符串,再录入一个小字符串
System.out.print("请输入大字符串:");
String big = sc.nextLine();
System.out.print("请输入小字符串:");
String small = sc.nextLine();
// 2.统计小字符串在大字符串中出现的次数
int count = getCount(big, small);
// 3.代码运行打印格式:
System.out.println("小字符串" + small + ",在大字符串中共出现" + count + "次");
}
/*
* 方法功能:统计小字符串在大字符串中出现的次数
* 参数:big 代表大字符串
* 参数:small 代表小字符串
* 返回值:小字符串在大字符串中出现的次数
*/
public static int getCount(String big, String small) {
int index = 0;
int count = 0;
/*
* indexOf(String str, int fromIndex)
* 该方法作用:从fromIndex位置开始查找,字符串str第一次出现的位置;若没找到,放回-1
*/
while ((index = big.indexOf(small, index)) != -1) {
index++;
count++;
}
return count;
}
}
第四题:需求实现
- 替换某字符串中的某字符串。
- 键盘录入一个srcStr字符串,再录入一个delStr字符串。
- 删除该字srcStr符串中的所有delStr字符串。
- 代码实现,部分效果如图所示:
- 参考答案:
public class Test4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1.键盘录入一个源字符串由字符串变量scrStr接收
System.out.print("请输入源字符串:");
String srcStr = sc.nextLine();
// 2.键盘录入一个要删除的字符串由字符串变量delStr接收
System.out.print("请输入要删除的字符串:");
String delStr = sc.nextLine();
// 3.删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),要求打印删除后的结果以及删除了几个delStr字符串
printCount(srcStr, delStr);
}
//删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),要求打印删除后的结果以及删除了几个delStr字符串
private static void printCount(String srcStr, String delStr) {
//删除后的结果
String resultStr = srcStr.replace(delStr, "");
//删除了几个delStr字符串
int count = (srcStr.length() - resultStr.length()) / delStr.length();
System.out.println("源字符串中总共包含:"+ count +" 个 "+ delStr +" ,\r\n删除"+ delStr +"后的字符串为: "+ resultStr);
}
}
第五题:需求实现
- 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
- 代码实现,效果如图所示:
- 参考答案:
public class Test5 {
public static void main(String[] args) {
double random = Math.random()*100;
System.out.println("随机数为:");
System.out.println(random);
String str = random+"";
int index = str.indexOf(".");
//System.out.println(index);
String substring = str.substring(0, index + 3);
System.out.println("转换为:");
System.out.println(substring);
}
}
第六题:需求实现
-
筛选字符串。
- 定义ArrayList集合,存入多个字符串。
- 长度大于5的字符串,打印删除后的集合。
-
代码实现,效果如图所示:
-
参考答案:
public class Test6 {
public static void main(String[] args) {
ArrayList<String> list = getArrayList();
System.out.println("源字符串:");
System.out.println(list);
//删除集合中长度大于5的元素
delStrsFromList01(list);
System.out.println("删除后:");
System.out.println(list);
}
//返回存储多个字符串的ArrayList集合
private static ArrayList<String> getArrayList() {
ArrayList<String> list = new ArrayList<>();
list.add("bca");
list.add("dadfa");
list.add("dddaaa");
list.add("你好啊");
list.add("我来啦,你干嘛呢");
list.add("别跑啊");
return list;
}
//删除list集合中所有长度>5的字符串
private static void delStrsFromList01(ArrayList<String> list) {
//创建ArrayList集合对象
ArrayList<String> newList = new ArrayList<String>();
//遍历原集合对象
for(int i = 0;i<list.size();i++) {
//获取当前元素
String str = list.get(i);
//如果str的长度大于等于5
if(str.length()>5) {
newList.add(str);//将str添加到新集合中
}
}
//遍历新集合
for(Object str : newList) {
//因为新集合中的元素就是要删除的元素
list.remove(str);
}
}
}
第七题:需求实现
-
判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom,dad,noon。
-
代码实现,效果如图所示:
-
参考答案:
public class Test7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
boolean p = isP(next);
System.out.println(
"回文数:" + p
);
}
public static boolean isP(String str) {
int start = 0;
int end = str.length() - 1;
while (start < end) {
if (str.charAt(start) != str.charAt(end)) {
return false;
}
start++;
end--;
}
return true;
}
}
扩展题目
第八题:需求实现
-
模拟简单计算器,可以运算+,—,*,/,%。
- 接收三个参数,一个整数,一个运算符,另一个整数。
- 计算出运算结果。
- 无法运算时,返回null。
-
代码实现,效果如图所示:
- 参考答案:
public class Test8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
String next = scanner.next();
int b = scanner.nextInt();
String count = count(a, next, b);
System.out.println(a +next +b +"="+count);
}
public static String count(int a, String op , int b ){
int r=0;
if ("+".equals(op)){
r = a+b;
}else if ("-".equals(op)){
r = a-b;
}else if ("*".equals(op)){
r = a*b;
}else if ("/".equals(op)){
r = a/b;
}else if ("%".equals(op)){
r = a%b;
}else {
return null;
}
return r+"";
}
}
第九题:需求实现
-
校验密码是否合法。
- 必须至少8个字符。
- 必须至少2个大写字符。
- 必须只有字母和数字。
-
代码实现,效果如图所示:
- 参考答案:
public class Test9 {
public static void main(String[] args) {
String s = "qweRY123";
System.out.println(s+" 密码是否合法:"+isV(s));
}
public static boolean isV(String pwd){
if (pwd.length()<8){
return false;
}
int countA = 0;
char[] chars = pwd.toCharArray();
for (int i = 0; i < chars.length; i++) {
char ch = chars[i];
// 2个 大写字符
if (ch >='A' && ch<='Z'){
countA++;
}
// 字母数字
if ((ch < '0'|| ch>'9') && (ch < 'A'|| ch>'Z')&&(ch < 'a'|| ch>'z')) {
return false;
}
}
if (countA < 2) {
return false;
}
return true;
}
}
第十题:需求实现
-
模拟用户登录。
- 定义用户类,属性为用户名和密码。
- 使用集合存储多个用户对象。
- 录入用户和密码,对比用户信息,匹配成功登录成功,否则登录失败。
- 登录失败时,当用户名错误,提示没有该用户。
- 登录失败时,当密码错误时,提示密码有误。
-
代码实现,效果如图所示:
-
参考答案:
public class Test10 {
static ArrayList<User> list = new ArrayList<>();
static {
list.add(new User("jack", "1234"));
list.add(new User("rose", "5678"));
list.add(new User("tom", "0000"));
for (int i = 0; i < list.size(); i++) {
list.get(i).show();
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username = sc.nextLine();
System.out.println("请输入密码");
String password = sc.nextLine();
User u = new User(username,password);
String login = login(u);
System.out.println("登录结果:"+login);
}
public static String login(User user){
String msg = "";
String n = user.getUsername();
String p = user.getPwd();
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
String name = u.getUsername();
String pwd = u.getPwd();
if(name.equals(n)) {
if (pwd.equals(p)) {
return "登录成功";
}else {
// 密码错误
return "密码错误";
}
}else{
msg = "用户名不存在"; //用户名不匹配
continue;
}
}
return msg ;
}
}
class User{
private String username;
private String pwd;
public User() {
}
public User(String username, String pwd) {
this.username = username;
this.pwd = pwd;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public void show() {
System.out.println(username+"-"+pwd);
}
}
评论区