测试

70 阅读1分钟

关于我复制掘金上的代码到idea上出现nbsp的原因

复制下面的代码到idea中不会出现nbsp

package com.java3;

import java.util.Arrays;

/**
 * @author : JiangShan
 * @version : 1.0
 * @Date : Created in 17:19 2022/6/16
 * bz :双色球,生成6个不同的随机数,存到数组
 */
public class Byspere {
    public static void main(String[] args) {

        //数组的长度是确定的
        int[] arr = new int[6];
        for (int i = 0, j, temp; i < arr.length; ) {
            //先随机生成一个数,如果这个数符合条件,那么再把这个值给数组

            temp = (int) (Math.random() * 34);
            for (j = 0; j < i; j++) {
                //如果相同,则会break,且不会满足下面的if条件,会从新生成随机数
                if (temp == arr[j]) {
                    break;
                }
            }
            //只有全部不同,才会执行到j==i,
            if (j == i) {
                //当j==i时,说明不重复,把这个数放在数组中,此时i才能自加
                arr[i] = temp;
                i++;
            }
        }
        //输出数组
        Arrays.sort(arr);
        for (int i : arr) {
            System.out.println(i);
        }

    }
}

复制下面的代码到idea会出现乱码nbsp

 package com.java4;
 ​
 import java.util.Scanner;
 ​
 /**
  * @author : Mr.Shan
  * @version : 1.0
  * @Date : Created in 9:11 2022/6/18
  * bz :
  *  5、【附加】向数组中添加非0数字:循环接受用户输入非0数字,并添加到数组中,重复元素不可以添加,具体要求如下:
  *   4)在main方法中创建长度为10的数组,并全部初始化为0。
  *   5)main方法中接受用户从键盘输入一个数字
  *   a)如果是0,则提示错误并重新输入;
  *   b)如果不是0,则调用自定义方法find(),查找该数在数组中是否存在;
  *   i.如果存在,则提示该数已存在,不可以向数组中插入,然后询问用户是否继续输入下一个数
  *   ii.如果不存在,则调用自定义方法insert(),向数组中添加此数,返回添加的位置,添加成功询问用户是否继续输入下一个元素,直到用户不想再输入或者数组已满,则停止循环
  *   6)main方法中输出添加结束之后的数组
  *   7)int find(int arr[],int num):用于查找num在arr数组中是否存在,如果存在,返回该数在数组中的位置,若不存在,则返回10(二分法查找)
  *   8)int insert(int arr,int num): 用于向arr数组中添加num元素,在arr数组中查找第一个为0的元素,
  *   将num的值添加到该位置,并返回添加成功之后的位置,如果找不到为0的数字,则返回10,代表数组已满,不可以再插入。
  */
 public class arrDemo {
     public static void main(String[] args) {
         int c = 0, d = 0; //
         int[] arr = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
         Scanner scanner = new Scanner(System.in);
 ​
 ​
         int num=0;
       a:  for (int i = 0; i <arr.length ; i++) {
             while (true) { //输入非0的数,第一个数很难处理!!!!!!
                 System.out.println("请输入一个数:");
                 num = scanner.nextInt();
                 if (num == 0) {
                     System.out.println("重新输入:");
                 } else {
                     break;
                 }
             }
 ​
 ​
             c = find(arr, num);
             if (c == 10) {
                 System.out.println("该数在数组中不存在");
                 d = insert(arr, num);
 ​
                 System.out.println("添加成功,是否继续添加y/n");
                 String s = scanner.next();
                 if (s.equals("n")) {
                     break a;  //打断大循环
                 }
 ​
             } else {
                 System.out.println("该数在数组中存在,且索引为" + c);
                 i--;  //不加这句话,重复多少次,末尾就多几个0
                 System.out.println("是否继续添加y/n");
                 String s = scanner.next();
                 if (s.equals("n")) {
                     break a;  //打断大循环
                 }
 ​
             }
         }
 ​
 ​
 ​
 // ======================输出结果===================
         System.out.println("==================");
         for (int j = 0; j < arr.length; j++) {
 ​
             System.out.println(arr[j] + " ");
         }
 ​
     }
 ​
 //=============================================================
     //find方法-顺序查找
 //  用于查找num在arr数组中是否存在,如果存在,返回该数在数组中的位置,若不存在,则返回10
     public static int find(int arr[], int num) {
         int index = 10;
 ​
         for (int i = 0; i < arr.length; i++) { //顺序查找
             if (arr[i] == num) {
                 index = i;
                 break;
             }
 ​
         }
 ​
         return index;
     }
 ​
 //================================================================此路不通
     //find二分法查找
 //    public static int findTwo(int arr[],int num){
 //        int index=10;
 //
 //        int start = 0;
 //        int end = arr.length - 1;
 //        while (start <= end) {
 //            int mid = (start + end) / 2;
 //            if (num > arr[mid]) {
 //                start = mid + 1;
 //            } else if (num < arr[mid]) {
 //                end = mid - 1;
 //            }else {
 //                return mid;
 //            }
 //
 //        }
 //        return index;
 //    }
 ​
 ​
 ​
 ​
 //==========================================================
     //    insert方法
 //    用于向arr数组中添加num元素,在arr数组中查找第一个为0的元素,
 //             将num的值添加到该位置,并返回添加成功之后的位置,如果找不到为0的数字,则返回10,代表数组已满,不可以再插入。
     public static int insert(int arr[], int num) {
         int index2 = 10;
         for (int i = 0; i < arr.length; i++) { //顺序查找
             if (arr[i] == 0) {
                 index2 = i + 1;
                 arr[i] = num;
                 break;
 ​
             }
 ​
         }
 ​
         return index2;
     }
 }

为什么会出现这种现象呢? 众所周知,typora之所以成为万千程序员的写作利器,是因为他的所见即所得。我写的代码一复制就乱码也和typora的所见即所得有关。为了方便,我经常在Typora写完文章,简单排版后,在非源代码页面直接复制到掘金的文档编辑器之中。因此,一些不必要的空格和编程的行号也被复制,所以我再将发布的内容粘贴到idea会出现nbsp。希望大家以我为鉴,在复制排版后的md文档时,一定要先点击Ctrl+/切换到md源代码,再复制粘贴。这样对大家都好!!!