我有以下3种方法:
>
方法:获取文本并将其单词拆分为特定字符串,然后将其放入字符串数组中。
public static String[] generateStringArray(String text) {
if (text.isEmpty()) {
throw new IllegalArgumentException(MSG_STRING_EMPTY);
}
// split pattern for all non word characters
return text.trim().split("\\W+");
}
方法:计算数组中仅由大小写字母组成的字符串的数量。
public static int countLowerUpperCaseStrings(String[] stringArray) {
if (stringArray.length == 0) {
throw new IllegalArgumentException(MSG_ARRAY_LENGTH_ZERO);
}
String convertedString;
int counter = 0;
char a;
char b;
for (int i = 0; i < stringArray.length; i++) {
a = stringArray[i].charAt(0);
b = stringArray[i].toLowerCase().charAt(0);
if (a == b) {
convertedString = stringArray[i].toLowerCase();
} else {
convertedString = stringArray[i].toUpperCase();
}
if (stringArray[i].compareTo(convertedString) == 0) {
counter++;
}
}
return counter;
}
public void numberOfUpperLowerCaseStrings() {
String text;
String[] stringArray;
System.out.println("Enter a text:");
text = input.nextLine();
stringArray = Algorithmen.generateStringArray(text);
System.out.println(Algorithmen.countLowerUpperCaseStrings(stringArray));
}
现在问题来了,如果我调用第三个方法首先通过扫描器
生成一个文本。
但不知怎么的,代码只是跳过了行text=input.nextLine();并抛出异常(MSG)字符串为空。执行文本“Enter a text:”,后面直接跟着异常。但我无法输入任何文本。
如果我将input.nextLine();
更改为input.next(),我可以输入一个文本,但在此之后,就会出现异常的无休止循环。
我还有另外两个方法,其中input.nextline
可以很好地工作。
我能想到的这种行为的唯一原因是,您可能在前面使用了相同的扫描器对象来扫描一个整数(代码中没有显示)。
如果你做了,
>
只需在输入.nextLine()
之后放置一个输入.nextInt()
即可清除缓冲区或
问题内容: 我正在编写一个使用Event类的程序,该类中有一个日历实例和一个String类型的描述。创建事件的方法使用扫描仪获取月,日,年,小时,分钟和说明。我遇到的问题是Scanner.next()方法仅返回空格之前的第一个单词。因此,如果输入为“我的生日”,则该事件实例的描述就是“我的”。 我做了一些研究,发现人们使用Scanner.nextLine()解决此问题,但是当我尝试这样做时,它只是
我的程序需要接受整数、单个字符或一个特定字符串(本例中我将使用)。虽然每一个都可以用空格分隔,但不需要这样做。 目前,我的解析代码依赖于,如下所示: 目前,我的程序将接受输入像没有任何问题。然而,它也应该接受相同的输入,没有任何空白(),并以相同的方式解释它,并且在我当前的代码中,单个数字被错误地解释为字符。 我觉得原因可能是我使用的正则表达式。但是,添加
我试图让扫描仪在每个@符号上拆分一个字符串,除非转义时(或在一行的开头) 我的RegEx: 从,我的理解,这应该对我的意图有效。 然而,当在扫描仪中使用此模式时,它只是忽略了这样一个事实,即不应将非捕获组计算到分隔符中,只是为了与之匹配,分隔符(要删除/拆分的部分)应仅为“@”。因此,对于以下示例String:“Hello@World“,结果必须是[”Hello“,”World“]。 除了运行以下
问题内容: 我试图找到一种方法来从键盘输入。 我尝试使用: 该方法不存在。 我尝试了作为。但是,它并不总是在每种情况下都可行,因为我从我的方法中调用的另一个方法需要作为输入。因此,我必须找到一种显式将char作为输入的方法。 有什么帮助吗? 问题答案: 你可以从中提取第一个字符: 消耗正好一个字符,你可以使用: 要严格使用一个字符,可以使用:
我在想,当时间限制达到10秒时,我怎么能不按回车键就输入“回车”。 所以我将输入尽可能多的字符,直到时间结束。我想将该字符串保存为“in” 我刚刚发现Robot类可以按enter键,但我认为我使用它的方式不正确。
我在我的第一个java程序中扫描用户输入时遇到了一些麻烦。当我编译并运行它时,会立即提示输入(即命令行停止并闪烁)。当我输入任何东西时,第一行被打印出来,要求我输入一个整数。然后打印第二行,并提示我输入另一个值。 这个程序的输出是我输入的前两个值。这很难解释,但它基本上要求3个输入值,只使用两个。