Java学习中遇到的问题

1.数组的输出方式

//数组的输出方式
public class Division {
    public static void main(String args[]){
        String str = "192.168.0.1";
        //按照“.”进行分割,使用转义字符“\\.”
        String[] firstArray = str.split("\\.");
        String[] secondArray = str.split("\\.",2);
        System.out.println("["+str+"]");
        System.out.println("["+firstArray+"]");
        System.out.println("["+secondArray+"]");
    }
}

输出结果:
[[Ljava.lang.String;@74a14482]
在这里插入图片描述
原因:
这样输出的是数组的地址。
因为数组是一个对象,要打印数组只有:
1、for循环、while循环等一个个元素打印
2、用Arrays.toString()等方法打印
解决办法:

//数组的输出方式
public class Division {
    public static void main(String args[]){
        String str = "192.168.0.1";
        //按照“.”进行分割,使用转义字符“\\.”
        String[] firstArray = str.split("\\.");
        String[] secondArray = str.split("\\.",2);
        System.out.println("["+str+"]");
        System.out.print("全部分割的结果:");
        for (String a : firstArray){
            System.out.print("["+a+"]");
        }
        System.out.println();//换行
        System.out.print("分割两次的结果:");
        for (String a : secondArray){
            System.out.print("["+a+"]");
        }
        System.out.println();//换行
    }
}
import java.util.Arrays;

//数组的输出方式
public class Division {
    public static void main(String args[]){
        String str = "192.168.0.1";
        //按照“.”进行分割,使用转义字符“\\.”
        String[] firstArray = str.split("\\.");
        String[] secondArray = str.split("\\.",2);
        System.out.println("["+str+"]");
        System.out.print("全部分割的结果:");
        /*for (String a : firstArray){
            System.out.print("["+a+"]");
        }
        System.out.println();//换行
        System.out.print("分割两次的结果:");
        for (String a : secondArray){
            System.out.print("["+a+"]");
        }
        System.out.println();//换行*/
        System.out.println(Arrays.toString(firstArray));
        System.out.print("分割两次的结果:");
        System.out.println(Arrays.toString(secondArray));
    }
}

两段代码运行结果:
在这里插入图片描述
这样看来,还是使用Arrays.toString()方法更加简便一点。

2.数组查询二分搜索法元素不存在返回索引值

语法:
binarySearch(Object[] a,Object key)
如果key包含在数组中,则返回搜索值的索引;否则返回-1或”-“(插入点)。
插入点是搜索键将要插入数组的那一点,即第一个大于此键的元素索引。

package Array;

import java.util.Arrays;

/**
 * Created by yxx on 2019/8/30.
 */
public class BinS {
    public static void main(String args[]){
        int arr[] = new int[]{4,25,10};
        Arrays.sort(arr);
        int index = Arrays.binarySearch(arr,0,1,8);
        System.out.println(index);
    }
}

运行结果:
在这里插入图片描述

package Array;

import java.util.Arrays;

/**
 * Created by yxx on 2019/8/30.
 */
public class BinS {
    public static void main(String args[]){
        int arr[] = new int[]{4,25,10};
        Arrays.sort(arr);
        int index = Arrays.binarySearch(arr,0,1,10);
        System.out.println(index);
    }
}

运行结果:
在这里插入图片描述
原因:(为什么查询8和11返回值都是-2)
因为数组中不存在8和11,先对数组进行排序
fromIndex:0,toIndex:1指的是数组arr中索引在0-1内的索引位置,所以,搜索时,只在4,25内进行,而8,11都是插在25前,所以,返回-2。
但是排序是将数组全部元素。
取消索引范围返回值就不一样了。

package Array;

import java.util.Arrays;

/**
 * Created by yxx on 2019/8/30.
 */
public class BinS {
    public static void main(String args[]){
        int arr[] = new int[]{4,25,10};
        Arrays.sort(arr);
        int index = Arrays.binarySearch(arr,8);
        System.out.println(index);
    }
}

运行结果:
在这里插入图片描述

package Array;

import java.util.Arrays;

/**
 * Created by yxx on 2019/8/30.
 */
public class BinS {
    public static void main(String args[]){
        int arr[] = new int[]{4,25,10};
        Arrays.sort(arr);
        int index = Arrays.binarySearch(arr,11);
        System.out.println(index);
    }
}

运行结果:
在这里插入图片描述

3.报错 The public type (*) must be defined in its own file

代码:

package Extends;
//继承机制
class Parent {
	Parent() {
		System.out.println("调用父类的Parent()构造方法");
	}
}
class SubParent extends Parent{
	SubParent() {
		System.out.println("调用子类的SubParent()构造方法");
	}
}
public class Subroutine extends SubParent{
	Subroutine() {
		System.out.println("调用子类的Subroutinr()构造方法");
	}
	public static void main(String args[]) {
		Subroutine s = new Subroutine();
	}
}

错误提示:The public type Subroutine must be defined in its own file
在这里插入图片描述
在这里插入图片描述
原因:
一个文件只能一个public 类,而且类名必须和文件名一样。
修改方法:
文件名与public类名一致即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值