Java-字符串-06-练习

1.键盘录入一个字符串,使用程序实现在控制台遍历字符串

package 遍历字符串;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String n=sc.next();
        for (int i = 0; i < n.length(); i++) {
            char c = n.charAt(i);
            System.out.println(c);
        }
    }
}

2.统计字符次数

键盘录入一个字符串,统计该字符串中大、小写字母字符,字符出现的个数

package 统计字符次数;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String n=sc.next();
        int count=0;
        int index=0;
        for (int i = 0; i < n.length(); i++) {
                char c = n.charAt(i);
                if (c>='a'&&c<'z'){
                    count++;
                }else if(c>='A'&&c<='Z'){
                    index++;
                }
        }
        System.out.println("小写:"+count+"大写:"+index);
    }
}

 3.定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。

package 拼接字符串;

public class test1 {
    public static void main(String[] args) {
        int[]arr={1,2,3};
        String s = arr(arr);
        System.out.println(s);
    }
    //定义方法
    public static String arr(int[]arr){
        String sum="";
        if (arr==null){
            return "";
        }
        if (arr.length==0){
            return "[]"; 
        }
        for (int i = 0; i < arr.length; i++) {
            if (i==0){
                sum="["+arr[i]+","+sum;
            }else if (i==2){
                sum=sum+arr[i]+"]";
            }else {
                sum=sum+arr[i]+",";
            }
        }
        return sum;
    }
}

4.定义方法,实现字符串反转。

键盘录入一个字符串,调用方法。

例如,abc->cba

package 字符串反转;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str=sc.next();
        String remove = remove(str);
        System.out.println(remove);
    }
    public static String remove(String str){
        //得到字符串的长度
        String sum="";
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            sum = c+sum;
        }
        return sum;
    }
}

5.金额转换

(第一个有错误,以此为鉴)

package 金额转换;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一串数字:");
        int number=sc.nextInt();
        String reserve = reserve(number);
        System.out.println(reserve);//把数字转化为中文数字

    }
    //定义方法
    public static String reserve(int number){

        //1.定义数组存放中文数字
        String[]arr={"零","壹","贰","叄","肆","伍","陆","琪","捌","玖"};
        //1.1
        //2.单位数组
        String[]brr={"佰","拾","万","仟","佰","拾","元"};
        String s="";
        //1.2获得个位上的数字
        int count=0;
        int temp=number;
//        if (number<0||number>8){
//            return "错误";
//        }
        while (true){
            int get=number%10;//获得个位
//            s=arr[ge]+s;
            number=number/10;
            count++;
            if (number==0){
                break;
            }
        }
         for (int i = brr.length-1; i >=0; i--) {
             int ge=temp%10;
             if (temp>=0&&temp<=7){
             s=arr[ge]+brr[i]+s;
             }

             temp=temp/10;

        }
        return s;
    }
}

(第二个跟老师打的)

package 金额转换;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int number;
        while (true){
            System.out.println("请输入金额:");
            number=sc.nextInt();
            if (number>=0&&number<=99999999){
                break;
            }else {
                System.out.println("金额无效");
            }
        }
        String moneyStr="";
        while (true){
            int ge=number%10;
            String capitalNumber = getCapitalNumber(ge);
            moneyStr=capitalNumber+moneyStr;
            number=number/10;
            if (number==10){
                break;
            }
        }
        int count=7-moneyStr.length();
        for (int i = 0; i < count; i++) {
            moneyStr="零"+moneyStr;
        }
        System.out.println(moneyStr);
        //2.单位数组
        String[]brr={"佰","拾","万","仟","佰","拾","元"};
        String result="";
        for (int i = 0; i < moneyStr.length(); i++) {
            char c = moneyStr.charAt(i);
            result=result+c+brr[i];
        }

    }
    //定义方法
    public static String getCapitalNumber(int number){
        //1.定义数组存放中文数字
        String[]arr={"零","壹","贰","叄","肆","伍","陆","琪","捌","玖"};
        return arr[number];
    }
    
}

6.字符串的号码屏蔽

package 手机号屏蔽;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入您的电话号码:");
        String number=sc.next();
        String s = number.substring(0, 3);
        String s1 = number.substring(7);
        String result=s+"****"+s1;
        System.out.println(result);

    }

}

7.StringBuilder练习

1)append增加

2)reverse反转

3)length()长度

4)toString拼接字符串

<1>键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是

对称字符串:123321、111

非对称字符串:123123

package 判断对称字符串;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String number=sc.next();
        StringBuilder sb=new StringBuilder();
        String s = sb.append(number).reverse().toString();
        if (s.equals(number)){
            System.out.println("是");
        }else {
            System.out.println("不是");
        }

    }

}

8.StringJoiner构造方法

1)add增加

2)toSting拼接

3)length()长度

4)StringJoiner sj=new StringJoiner("中间符号","左边符号","右边符号");

9.键盘录入一个字符串,

要求1:长度小于等于9

要求2:只能是数字

将内容变成罗马数字

下面是阿拉伯数字跟罗马数字的对比关系:

Ⅰ-1,Ⅱ-2,Ⅲ-3,Ⅳ-4,Ⅴ-5,Ⅵ-6,Ⅶ-7,Ⅷ-8,Ⅺ-9

注意点:

罗马数字里面是没有0的

如果键盘录入的数字包含0,可以变成" "(长度为0的字符串)

1)方法1:

​
        package 罗马数字;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int number;
        while (true){
            System.out.println("请输入一个字符串:");
            //要求2:只能是数字
            number=sc.nextInt();
            //要求1:长度小于等于9
            if (number>=0&&number<=999999999){
                break;
            }else {
                System.out.println("输入错误");
            }
        }
        //2.2每位数
        int ge;
        int count=0;
        String result="";
        while (true){
            ge=number%10;
            String s = luoNumber(ge);
            result=s+","+result;
            count++;
            number=number/10;
            if (number==0){
                break;
            }
        }
        System.out.println(result);
        //3.将内容变成罗马数字



    }
    public static String luoNumber(int ge){
        String[]arr={" ","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
        return arr[ge];
    }

}

​

2)方法2:

package 罗马数字;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str;
        while (true){
            System.out.println("请输入一个字符串:");
            str=sc.next();
            boolean flag = checkStr(str);
            if (flag){
                break;
            }else {
                System.out.println("错误");
            }
        }
        StringBuilder sb=new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
             int number=c-48;
            String s = changeLuoMa(number);
            sb.append(s);
        }
        System.out.println(sb);




    }
    public static boolean checkStr(String str){
        if (str.length()>9){
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c<'0'||c>'9'){
                return false;
            }
        }
        return true;
    }
    public static String changeLuoMa(int number){
        String[]arr={" ","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
        return arr[number];
    }

}

10.调整字符串

给定两个字符串,A和B。

A的旋转操作就是将A最左边的字符移动到最右边。

例如,若A='abcde',在移动一次之后结果就是'bcdea'。

如果在若干次调整操作后,A能变成B,那么返回True。

如果不能匹配成功,则返回false

package 调整字符串;



public class test1 {
    public static void main(String[] args) {
        String strA="abcde";
        String strB="cdeab";
        boolean b=b(strA,strB);
        System.out.println(b);

    }
    //2.判断是否相等
    public static boolean b(String strA,String strB){
        for (int i = 0; i < strA.length(); i++) {
            strA=rotate(strA);
            if (strA.equals(strB)){
                return true;
            }
        }
        return false;
    }
    //1.旋转拼接:A的旋转操作就是将A最左边的字符移动到最右边。
    public static String rotate(String strA){
        //1.1截取
        char first = strA.charAt(0);
        String s = strA.substring(1);
        return s+first;
    }

}

11.键盘输入任意字符串,打乱里面的内容

package 打乱字符串;

import java.util.Random;

//1.subString
//2.变成字符数组
public class test1 {
    public static void main(String[] args) {
        String str="abcde";
        Random sc=new Random();
        char[]arr=str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            int num= sc.nextInt(str.length());
            char temp=arr[i];
            arr[i]=arr[num];
            arr[num]=temp;
        }
        String result=new String(arr);
        System.out.println(result);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实验目的: 练习使用Java基本数据类型。使用Java的String类操作字符串和子串。 实验内容: 1.写一个程序提示用户键入某一货币数量(以分为单位),该程序应计算出如何用最少量的1元,50分,10分和1分硬币得到该数目。如195分最少可以用一个1元硬币,1个50分硬币,4个10分硬币和5个1分硬币组成。 注意不要用数组存放不同硬币的值。 2.写一个程序可以对两个字符串进行测试,得知第一个字符串是否包含在第二个字符串中。如字符串”PEN”包含在字符串“INDEPENDENT”中。 可以利用字符串类方法 boolean regionMatches(int toffset, String other, int ooffset, int len) toffset 指从被调用方法的字符串的第几个字符开始测试,如果是0,表明从字符串的首字符开始。other是指使用的另一个字符串。ooffset指从另一个字符串的第几个字符开始。len指要比较几个字符。该方法返回boolean值。 在本题中,ooffset为0,因为我们要测试整个短字符串;len是短字符串的长度;所以应该用 big.regionMatches(index, small, 0, small.length()) 如果big指“independent",small指"pen",则index=2时为假,index=4时为真 (b)改进程序,当第一个字符串包含在第二个字符串中时,显示第一个字符串在第二个字符串中的起始位置。 (c)改进程序,即使当用户输入顺序错误时(第一个是长字符串,第二个是短字符串),能自动在长字符串中搜寻短字符串

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值