🐋11. 字符串转其他类型异常
public class Demo01 { public static void main(String[] args) throws InterruptedException { String str1 = "10.55"; String str2 = "10.55a"; //转换类型+1 System.out.println(Integer.parseInt(str1)+1); }
例如:"10.55"字符串,转换整数报错。
🌲🌲解决方法
方法一: 把字符串中,不能转换的内容删除
例如:String str1 = "10";
方法二:使用指定类型进行转换,Double小数类型
例如:Double.parseDouble(str1);
🐋12. 三元运算符使用错误
🌲🌲描述
public class Demo01 { public static void main(String[] args) throws InterruptedException { 10==10?"相等":"不相等"; } }
🌲🌲解决方法
public class Demo01 { public static void main(String[] args) { //三元运算符注意事项 //三元运算符 结果必须被使用(被展示、被赋值、参与运算) //1.被展示 System.out.println(10==10?"相等":"不相等"); //10==10?"相等":"不相等"; //2. 被赋值 double dd = (10!=9)?10.55:20.55; //3. 参与运算 System.out.println( ((10!=9)?10.55:20.55)>10 ); } }
🐋13. Scanner数字和字符串混用问题
🌲🌲描述
数字和字符串在同一个Scanner混用,会导致 nextLine()不能阻塞,被跳过
🌲🌲解决方法
Scanner 数字定义一个变量,字符串定义另一个变量。
🐋14.毫秒值运算超出Int范围
🌲🌲描述
import java.util.Date; public class Demo01 { public static void main(String[] args) { Date d = new Date(); System.out.println(d.toLocaleString()); //需求:需要设置365天后的现在 //365天毫秒值 = 1000*60*60*24*365 long x = d.getTime()+1000*60*60*24*365; d.setTime(x); System.out.println(d.toLocaleString()); } }
1000*60*60*24*365远远超出int范围,使得数据丢失
🌲🌲解决方法
数变为long类型
import java.util.Date; public class Demo01 { public static void main(String[] args) { Date d = new Date(); System.out.println(d.toLocaleString()); //需求:需要设置365天后的现在 //365天毫秒值 = 1000*60*60*24*365 long x = d.getTime()+1000L*60*60*24*365; d.setTime(x); System.out.println(d.toLocaleString()); } }
15. 无法加载和找不到主类错误
public class Demo01 { public static void main(String[] args) { System.out.println("你好"); } }
执行java代码时,控制台报错:
我们发送的run指令,IDEA接收后,在out目录找不到该java文件的class文件。
导致运行失败
🌲🌲解决方法
代码是无错的,错误在于idea的自动编译机制卡死导致:
方法一:删除out目录,重新编译当前java类。
方法二:手动新建一个java类,把代码复制粘贴进去。
方法三:或者右击,选择重新编译:
16. 无限循环后的代码问题
public class Demo01 { public static void main(String[] args) { for (;;){ System.out.println("a"); } System.out.println("你好!"); } }
无限循环后写代码会报错
无限循环后不写任何代码
无限循环中 加入条件判断及break/return关键字
🐋17. 无限循环后的代码问题2
break后跟代码,就会展示报错。
public class Demo01 { public static void main(String[] args) { int j = 1 ; while (j <= 999 ) { System.out.println(j); break; j++; } System.out.println("while结束"); } }
🌲🌲解决方法
代码写于break上方
加入分支语句(if、switch)
🐋18. 空指针异常
🌲🌲描述
import java.util.Random; public class Demo01 { public static void main(String[] args) { Random r1 = new Random(); int i = r1.nextInt(10); Random r2 = null ; int i1 = r2.nextInt(10); } }
🌲🌲解决方法
import java.util.Random; public class Demo01 { public static void main(String[] args) { Random r1 = new Random(); int i = r1.nextInt(10); Random r2 = null ; r2 = new Random(); int i1 = r2.nextInt(10); } }
19. 索引越界异常
public class Demo01 { public static void main(String[] args) { int[] arr = {11,22,33}; //最大索引为:2 System.out.println(arr[1000]); System.out.println(arr[-1000]); } }
🌲🌲解决方法
确定索引的范围是 0~数组长度-1 ,不要超范围使用。
🐋20. 结构体中,属性无法使用问题
🌲🌲描述
Student类和Demo1类没有在同一个包下,
Demo1类中直接使用学生类 属性报错:
🌲🌲解决方法
学生类的成语变量(属性)前面加入 public