Java 当string.lenght()为0时,将引发异常
我需要解决以下问题: 在本练习中,您将创建两个处理Java 当string.lenght()为0时,将引发异常,java,string,exception,Java,String,Exception,我需要解决以下问题: 在本练习中,您将创建两个处理异常的方法。其中一个方法是main()方法,它将调用另一个方法 如果在另一个方法中抛出异常,main()必须处理它。将包含一条finally语句,表示程序已完成。main()将调用的方法将命名为reverse,它将反转字符串中字符的顺序。如果字符串不包含任何字符,则reverse会将异常传播到main()方法 创建一个名为Propagate的类和一个main()方法,该方法暂时保持为空 创建一个名为reverse的方法。它接受字符串的参数,并返回
异常的方法。其中一个方法是main()
方法,它将调用另一个方法
如果在另一个方法中抛出异常,main()
必须处理它。将包含一条finally
语句,表示程序已完成。main()
将调用的方法将命名为reverse
,它将反转字符串中字符的顺序。如果字符串
不包含任何字符,则reverse会将异常传播到main()
方法
创建一个名为Propagate
的类和一个main()
方法,该方法暂时保持为空
创建一个名为reverse
的方法。它接受字符串的参数
,并返回字符串
在reverse
中,使用String.length()
方法检查字符串的长度是否为0。如果长度为0,则reverse
方法将抛出异常
现在,包括颠倒字符串
顺序的代码。因为这不是本章的主要主题,所以提供了反转代码,但是您可以自己尝试
字符串reverseStr=“”;
对于(int i=s.length()-1;i>=0;--i){
reverseStr+=s.charAt(i);}
反向返回
现在在main()
方法中,您将尝试调用此方法并处理任何潜在的异常。此外,还将包括一个finally
语句,该语句在main()
完成时显示
问题是,即使String.length()
为0,也不会引发异常:
import java.util.*;
import java.util.Scanner;
import java.lang.IllegalArgumentException;
public class TryAndCatch {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter: ");
String entry = keyboard.next();
try {
if (entry.length() == 0) {
}
}
catch (IllegalArgumentException e) {
System.err.println("String can't have 0 characters: " + e.getMessage());
}
System.out.println("The reverse String is : " + TryAndCatch.reverse(entry));
keyboard.close();
}
static String reverse(String text) {
String reverseString = "";
for (int i = text.length() - 1; i >= 0; i--) {
reverseString += text.charAt(i);
}
return reverseString;
}
}
试试这个。这应该给你一个例外
public static void main(String[] args) throws Exception {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter: ");
String entry = keyboard.nextLine();
keyboard.close();
if (entry.length() == 0) {
throw new Exception("Exception Found");
}
else {
String reverse = reverse(entry);
if (reverse.length() == 0) {
throw new Exception("Exception Found");
}
else {
// Do your Code
System.out.println(reverse);
}
}
}
static String reverse(String text) {
String reverseString = "";
for (int i = text.length() - 1; i >= 0; i--) {
reverseString += text.charAt(i);
}
return reverseString;
}
并使用nextLine()而不是next()上述答案很有帮助,但需要将异常从反向方法传播到主方法
package exceptions.examples;
public class Reverse {
public static void main(String[] args) {
// TODO Auto-generated method stub
String reverse = "", reversedString;
try {
reversedString = reverseme(reverse);
System.out.println("Reversed String : "+reversedString );
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
finally {
System.out.println("Finished!");
}
}
public static String reverseme(String reverse) throws IllegalArgumentException {
String reversedString = "";
if(reverse.length() == 0) {
throw new IllegalArgumentException("Length cannot be zero!");
}
for(int i = reverse.length() - 1; i >= 0; i--) {
reversedString += reverse.charAt(i);
}
return reversedString;
}
}
当然,不会引发异常。当entry.length()==0
时,您的代码实际上什么也不做。启动应用程序时,它始终为0。异常不是String.length()
的默认行为,您需要自己抛出它。在这种情况下,你可能不想反转它好吧,我从哪里开始?1.不应使用.next()而应使用.nextLine();2.字符串有一个.isEmpty()方法;3.这个练习从一开始就很糟糕(main()如何处理异常?);etc再次编写问题陈述。reverse函数必须抛出一个在main方法中捕获的异常。您也应该在异常发生之前关闭扫描仪。总的来说,这没什么大不了的,但如果该计划继续存在,这就不是一个好主意@阿克塞尔。更新。谢谢你的信息。