close()方法出现NoSuchElementException异常的原因和解决方法以及String和Scanner类中的那些方法

目录

🐻Scanner类使用的常见异常InputMismatchException&&IllegalStateException

🐻关于Scanner类中的close方法出现的java.util.NoSuchElementException异常

🐻字符串比较方法

🐻字符串常用构造方法

🐻字符串的大小写转换

🐻将字符串转化为数组

🐻字符串比较

🐻字符串替代

 🐻去除字符串前后的空格

🐻截取字符串

🐻查找子串以及字符索引

 🐻字符串分割 

🐻判断字符串是否为空


🐻Scanner类中的常用输入方法

  • next()
    读入一个字符串并返回
    next()方法会跳过输入流前面的空格以及回车符同时当next()读入时碰到空格或者制表符或者回车符时会终止该字符串的读入,但不会吸收输入流中的回车符,最后返回已有的读入序列。
    例如:
  • nextLine()
    读入一个含有空格/制表符的字符串并返回
    nextLine在读入数据时,会读入包含空格/制表符在内的字符串,遇到回车符结束,同时吸收该回车符,返回录入的字符串。
  • nextInt()
    读入一个整数并返回
    nextInt在读入一个整数时,会跳过读入位置前面的空格/制表符/回车读入整数时遇到空格/制表符/回车则结束,遇到非整数类型则抛出java.util.InputMismatchException输入令牌不匹配的异常。

🐻Scanner类使用的常见异常InputMismatchException&&IllegalStateException

  • java.util.InputMismatchException
    出现原因:输入的内容与要录入的数据类型不匹配
    举例:
     
  • java.lang.IllegalStateException
    出现原因:扫描仪关闭后仍使用该扫描仪读数据
    举例:

🐻关于Scanner类中的close方法出现的java.util.NoSuchElementException异常

  • 出现原因:System.in是一个静态流,初学的思路通常是使用完一个Scanner对象后进行该对象的close(),然后再下一次需要读入数据时,继续创建Scanner对象,但是后创建的Scanner对象和先创建的Scanner对象指向同一个状态,在上一个Scanner对象关闭时,该输入流已经被关闭了。
  • 解决方法:将所有的Scanner都集中在代码的末尾关闭,或使用同一个Scanner对象,都是用结束后再关闭。

🐻字符串比较方法

关于equals方法和==运算符的区别,可以查看http://t.csdn.cn/icuL0

String类中的equals()方法,重写了Onject类中的equals方法,可以进行字符串内容的比较来判断字符串是否相等,函数原型:

 String类中的equalsIgnoreCase方法()时equal方法的扩展,可以忽略字符串中字符的大小写进行字符串内容的比较。例如:

🐻字符串常用构造方法

  • 以字符数组构造字符串
  • 以字节数组构造字符串
  • 无参构造方法

🐻字符串的大小写转换

🐻将字符串转化为数组

  • 将字符串转换为字符数组
  • 将字符串转换为字节数组

🐻字符串比较

当我们观察String类时,会发现它默认继承了comparable接口,并且覆写了compareTo方法也就说明了字符串之间是可以进行比较的。

字符串之间的比较规则(假设str1调用compareTo方法与str2进行比较):

  •  str1>str2(返回值 > 0)
    ①str1.length() > str2.length() 并且 str1与str2等长的部分相等。返回str1.length()-str2.length()。
    ②str1与str2的等长部分不相等。返回str1比str2大的字符的unicode差值。
  • str1==str2(返回值 == 0)
    返回0.
  • str1<str2(返回值 < 0)
    ①str1.length() < str2.length() 并且str1与str2的等长部分相等。返回str1.length()-str2.length().
    ②str1与str2等长部分不相等,返回str1中比str2小的字符的unicode差值.

🐻字符串替代

  • replace(char oldChar,char newChar)
  • replace(CharSeqence target,CharSeqence replacement)
    String类默认继承了CharSeqence接口,因此可以利用多向上转型传String对象给CharSeqence类型的参数接收。
  • replaceAll(String regex,String replacement)
    实现的效果和replace(CharSeqence target,CharSeqence replacement)一致。
  • replaceFirst(String regex,String replacement)
    将字符串中第一次出现regex的字符串替换成replacement字符串并返回新对象。

 🐻去除字符串前后的空格

🐻截取字符串

  • subString(int beginIndex)
    subString(int beginIndex,int endIndex)
     

🐻查找子串以及字符索引

  • contains(CharSeqence s)
  • indexOf(int ch)
    indexOf(String str)
     
  • lastIndexOf(int ch)
    lastIndexOf(String str)
  • startWith(String perfix)
    endWith(String prefix)

 🐻字符串分割 

  • split(Stirng regex)
    将字符串按照特定分割序列分割

🐻判断字符串是否为空

  • 判断字符后是否为空是指是否为空串"",而不是null

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小s的s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值