如何解决尝试并捕获在 JAVA 中执行的两者
我正在尝试在用户输入字符串时检查整数、"" 和 " "。每件事都按预期工作,但是当我传递一个空字段时,它会验证并打印无效输入。除此之外,它还从 catch 打印 println 语句。下面是我的代码和实际输出。
package com.assessment;
import java.util.Scanner;
public class MaxCharString {
public static void main(String[] args) {
int i,j,count = 0,maxcount = 0;
System.out.println("Enter a string to find the maximum character.");
Scanner input = new Scanner(System.in);
String character = input.nextLine().toLowerCase();
try {
if (character == "") {
System.out.println("Invalid Input");
}
int inputCharacter = Integer.parseInt(character);
System.out.println(inputCharacter + " is not a valid Input. Please try again.");
} catch (NumberFormatException e) {
char result = 0;
char ch[] = character.toCharArray();
for (i = 0; i < ch.length; i++) {
count = 0;
for (j = 0; j < ch.length; j++) {
if (ch[i] == ch[j]) {
count++;
}
if (maxcount < count) {
maxcount = count;
result = ch[i];
}
}
}
System.out.println("Maximum count of occuring character in the string is: " + result);
input.close();
}
}
}
输出:
Invalid Input
Maximum count of occuring character in the string is:
谁能帮我解决这个问题。谢谢。
解决方法
你的问题将是等号。
必须使用 your_string.equals("")
检查字符串。
如果要检查单个字符,则必须使用单引号和双等号。例如。 your_char = ' '
。
整个事情有点不对劲,因为您正在检查一个字符串,而不是一个字符,而且您还使用了错误的等号。
String character = input.nextLine().toLowerCase();
try {
if (character == "") {
System.out.println("Invalid Input");
}
像这样修复它:
//Better name.
String line = input.nextLine().toLowerCase();
try {
if (line.equals("")) {
System.out.println("Invalid Input");
}
这也有点奇怪,因为您通常不会将 catch 用于真正的逻辑。 Catch 是针对意外错误的。如果您要为有效任务进行分支,请使用 if-else。
仅供参考,最简单的调试方法是跳入调试器并逐行查看它的位置以及意外情况。
为什么会成功?
正如评论所指出的,您试图将一个空值解析为一个无效的整数。此外,您应该在进入异常时记录异常,以便了解“为什么”进入捕获状态。 e.printStackTrace()
如果您将其添加为 catch 中的第一行,就会让您一目了然。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。