Java常见编程题基础篇(1)

Java常见编程题(1)

1.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,例如“人abc”,应该截为“人ab”;输入“人abc们”,应该截为“人abc”,而不是截为“人ab+们的半个”

public class test0721 {
    public static void main(String[] args) {
        String str = "我ABC";
        String str1 = "我ABC你DEF";
        subStringByBytes(str,4);
        subStringByBytes(str1,6);

    }

    public static void subStringByBytes(String str,int len){
        if(str==null){
            return;
        }
        if(len > str.length()){
            len = str.length();
        }

        byte[] bytes = str.getBytes();
        //对是否出现截半做分类处理,如果出现截半情况,则asc码值小于0
        if(bytes[len] < 0){
            String result = new String(bytes, 0, len--);
            System.out.println("出现了截半情况,结果为:"+result);
        }else{
            String result = new String(bytes, 0, len);
            System.out.println("没有出现截截半情况,结果为:"+result);
        }
    }
}

2.输出指定范围内有多少个素数

package demo2007;
/*输出指定范围内有多少个素数*/
public class test0722 {
    public static void main(String[] args) {
          getSuShu(100,200);
    }

    public static void getSuShu(int startNum,int endNum){
        int count = 0;
        boolean flag = false;
        for (int i = startNum; i < endNum; i++) {
            for (int j = 2;j < i; j++){
                if(i % j == 0){
                    flag = false;
                    break;
                }else{
                    flag = true;
                }
            }
            if (flag){
                count++;
                System.out.println(i);
            }

        }
        System.out.println(startNum + "与" + endNum + "之间有" +count + "个素数");
    }

}

3.判断一个数是不是2的次方

package demo2007;
/*判断一个数是不是2的次方*/
public class Demotest0722 {
    public static void main(String[] args) {
        boolean b = method(32);
        if (b){
            System.out.println("是");
        }else{
            System.out.println("不是");
        }

    }

    public static boolean method(int num) {
        boolean flag = false;
        //&与的方法,例如:8-1=7;8二进制为1000,7二进制为0111,1000&0111=0
        if ((num&(num-1)) == 0 && num > 0 ){
           flag = true;
        }
        return flag;
    }
}

4.有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数

package demo2007;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数*/
public class Demo0723 {
    public static void main(String[] args) {
        String str = "沃尼塔 acdf 是什么22 eeee 不是 ww 你好";
        Map<String, Integer> m = method(str);
        Set<Map.Entry<String, Integer>> entries = m.entrySet();
        for (Map.Entry<String, Integer> e : entries) {
            System.out.println(e.getKey() + ":" + e.getValue());
        }

    }

    public static Map<String, Integer> method(String str) {
        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            String s = String.valueOf(c);
            Integer num = map.get(c);
            if (num == null) {
                num = 1;
            } else {
                num = num + 1;
            }
            map.put(s, num);
        }
        return map;
    }
}
package demo2007;

import java.util.HashMap;
import java.util.Map;

public class Demo072302 {
    public static void main(String[] args) {
        String str = "中国AA有hhh美国你是的";
        Map<Character, Integer> map = new HashMap<>();
        char[] chars = str.toCharArray();
        for (char c:chars) {
            if (map.containsKey(c)){
                map.put(c,map.get(c)+1);
            }else{
                map.put(c,1);
            }
        }
        System.out.println(map);

    }
}

5.有数组 a[n],将数组元素顺序颠倒

package demo2007;


import java.util.Arrays;

/*有数组 a[n],将数组元素顺序颠倒*/
public class Demo0724 {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5,6,7};
        int[] arr = method(a);
        System.out.println(Arrays.toString(arr));

    }

    public static int[] method(int[] a){
        int temp;
        int len = a.length;
        for (int i = 0; i < len / 2; i++) {
            temp = a[i];
            a[i] = a[len-1-i];
            a[len-1-i] = temp;
        }
        return a;
    }
}

6.给定一个字符串,打印 这个字符串的全排列。例如,输入为abc,输出为: abc acb bac bca cba cab

package demo2007;

import java.util.ArrayList;

/*给定一个字符串,打印 这个字符串的全排列。例如,输入为abc,输出为: abc acb bac bca cba cab*/
public class Demo072401 {
    public static void main(String[] args) {
        String str = "abc";
        ArrayList<String> list = new ArrayList<>();
        method(list,str.toCharArray(),0);
        for (String result:list) {
            System.out.println(result);
        }
    }

    public static void method(ArrayList<String> list, char[] chars, int i){
        if(i == chars.length-1){
            String val = String.valueOf(chars);
            if(!list.contains(val)){
                list.add(val);
            }
        }else {
            for (int j = i; j < chars.length; j++) {
                swap(chars,i,j);
                method(list,chars,i+1);
                swap(chars,i,j);
            }
        }

    }

    private static void swap(char[] chars, int i, int j) {
        char temp = chars[i];
        chars[i] = chars[j];
        chars[j] = temp;
    }
}

7.利用条件运算符的嵌套来完成此题:学习成绩> =90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。

package demo2007;
/*利用条件运算符的嵌套来完成此题:学习成绩> =90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。*/
import java.util.Scanner;

public class Demo0725 {
    public static void main(String[] args) {
        while (true) {
            System.out.println("请输入一个分数:");
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();
            char grade = (i >= 90) ? 'A' : (i > 60) ? 'B' : 'C';
            System.out.println(grade);


        }
    }
}

8.编写函数insert(String str),将字符串”a,123;b,456;c,789”置入HashMap中

package demo2007;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

/*编写函数insert(String str),将字符串”a,123;b,456;c,789”置入HashMap中*/
public class Demo0726 {
    public static void main(String[] args) {
        Demo0726 d = new Demo0726();
        d.insert("a,123;b,456;c,789");
    }

    public static void insert(String str){
        HashMap<String, String> map = new HashMap<>();
        String[] strs = str.split(";");
        for (int i = 0; i < strs.length; i++) {
            String[] s = strs[i].split(",");
            map.put(s[0],s[1]);
        }

        Set<String> keySet = map.keySet();
        System.out.println("增强for循环遍历:");
        for (String key: keySet) {
            System.out.println(key+":"+map.get(key));
        }

        System.out.println("迭代器方法遍历:");
        Iterator<String> iterator = keySet.iterator();
        while (iterator.hasNext()) {
            String key = iterator.next();
            System.out.println(key + ":" + map.get(key));
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值