Java热搜问题大整理

举报
香菜聊游戏 发表于 2021/12/16 09:31:15 2021/12/16
【摘要】 今天看到了csdn 的热搜数据,大概分析了下java的一些热门查找,因为csdn的用户大都是一些在校学生,所以热门搜索的问题都是一些基础知识,今天稍微整理下热搜的一些问题,挑一些典型的问题进行解答,希望能对新入手的java新人以启示。OK,废话不多说,走起希望各位看官能给点个赞,码字不易,整理不易,你的肯定是我写作的动力1、java输入语句  public static void mai...

今天看到了csdn 的热搜数据,大概分析了下java的一些热门查找,因为csdn的用户大都是一些在校学生,所以热门搜索的问题都是一些基础知识,今天稍微整理下热搜的一些问题,挑一些典型的问题进行解答,希望能对新入手的java新人以启示。OK,废话不多说,走起

希望各位看官能给点个赞,码字不易,整理不易,你的肯定是我写作的动力

1、java输入语句
 

   public static void main(String[] args) {
        //   public final static InputStream in = null;
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String i = scanner.next();
            System.out.println(i);
        }
    } 


System.in 是从连接控制台的输入流 InputStream

Scanner 是包装类,可以对InputStream 进行转换,在输入的时候转换为Int ,Boolean 等类型,省去手动转换的麻烦

2、java开根号

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int i = scanner.nextInt();
            System.out.println(Math.sqrt(i));
        }
    }

这个问题应该是初学者不太清楚Math 下面的都有哪些函数,Math下面包含了我们常用的max,min,ceil ,sqrt ,round等函数,在数学运算的时候如果不太清楚,可以打开api看一下,基本上都能满足你的需求。能用库里的就用库里的,别自己瞎造轮子,你造了别人不喜欢用。

3、java进制转换


进制的转换,这种需求太普遍了以至于jdk 直接内置了转换方法,常用的八进制,十六进制,二进制方法直接定义好了,任意进制的也留了进口

将其他进制的数字转换为十进制 Integer.parseInt("121",3) ,第一个参数是字符串,第二个参数是原来的进制。

    public static void main(String[] args) {
        int n=  16;
        System.out.println(n + "的八进制是:" + Integer.toOctalString(n));
        System.out.println(n + "的二进制是:" + Integer.toBinaryString(n));
        System.out.println(n + "的十六进制是:" + Integer.toHexString(n));
        System.out.println(n + "的3进制是:" + Integer.toString(n, 3));
​
//        radix进制的字符串s转10进制 Integer.parseInt((String) s,(int) radix);
        System.out.println(Integer.parseInt("121",3));
    }


4、 java 随机整数


java中产生随机数的方法主要有三种

第一种:new Random(),Java自带的随机类,可以设置种子进行伪随机,保证每次执行的数据一样

第二种:Math.random() ,java封装之后的工具函数,最终也是调用的Random类

第三种:currentTimeMillis(),根据时间的随机性

   public static void main(String[] args) {
        double r1 = Math.random();
        Random random2 = new Random();
        int r2 = random2.nextInt();
        Random random3 = new Random(1000);
        int r3 = random3.nextInt();
        long r4 = System.currentTimeMillis() % 100;
        double r5 = Math.random();
    }


详细的介绍:战斗要同步,又要有随机,怎么办?大佬告诉我这么做_香菜-CSDN博客

5、九九乘法表java


九九乘法表可能是我初学者的课堂作业,所以也是热搜的词,下面我给一个示例代码

    public static void print9x9() {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                if (i >= j) {
                    String oneItem = i + "*" + j + "=" + i * j + " ";
                    System.out.print(oneItem);
                }
            }
            System.out.println();
        }
    }


注意点:

循环的上限是9,所以结束的是小于等于好

换行符要在外层循环打印

oneItem 代表一个乘法公式

6、回文数java


一个正整数,如果交换高低位以后和原数相等,那么称这个数为回文数。比如 121121,23322332都是回文数,13,456713,4567 不是回文数。

思路:先将数字转为字符串,然后一个字符一个字符进行比较,如果相等则是回文

public static void main(String[] args) {
        System.out.println(isRevert(110));
    }
    public static boolean isRevert(int num){
        String value=Integer.toString(num);
        char array[]=value.toCharArray();
       for (int i =0;i< value.length()/2;i++){
           if (array[i]!= array[value.length() -i-1]){
               return false;
           }
       }
       return true;
    }


注意点:

第一个位置要和最后一个位置 length-1 进行比较,所以所以是value.length() -i-1

如果在循环的过程中发现不匹配的字符串,则直接返回false

7、java二分查找
二分法检索(binary search)又称折半查找,二分查找的基本思想是设数组中的元素从小到大有序地存放在数组(array)中(注:二分法查找的关键,首先数组元素必须从小到大有序排列),

(1)首先将给定值 key 与数组中间位置上元素的关键码(key)比较,如果相等,则检索成功;

(2)否则,若 key 小,则在数组前半部分中继续进行二分法检索;

(3)若 key 大,则在数组后半部分中继续进行二分法检索。 这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。 二分法检索是一种效率较高的检索方法。

 

class BinarySearch{
    /*
        二分法查找
    */
    public static void main(String[] args){
        int[] arr = {1,2,3,4,5,6,7,8};
        int a = 0;
        System.out.println(binarySearch(a,arr));
    }
    // 二分法查找
    static int binarySearch(int a,int[] arr){
        // 最大索引
        int maxIndex = arr.length -1;
        // 最小索引
        int minIndex = 0;
        // 中间索引
        int halfIndex = minIndex+(maxIndex-minIndex)/2;
    
        while (minIndex<=maxIndex){
            // 找到时 
            if (arr[halfIndex]==a){
                return halfIndex;
            }else if (arr[halfIndex]<a){// 比a小时
                minIndex = halfIndex + 1;
            }else {// 比a大时
                maxIndex = halfIndex - 1;
            }
            halfIndex = minIndex+(maxIndex-minIndex)/2;
        }
        return -1;
    }
}
​


时间复杂度

  1.最坏情况查找最后一个元素(或者第一个元素)Master定理T(n)=T(n/2)+O(1)所以T(n)=O(logn)   2.最好情况查找中间元素O(1)查找的元素即为中间元素(奇数长度数列的正中间,偶数长度数列的中间靠左的元素)

空间复杂度:

  S(n)=n

总结:


大都是一些基础的问题,九层之台起于垒土,基础非常重要,如果不理解的话可以直接记住,或者留言交流,我会及时回复

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。