gpt4 book ai didi

java - 在扫描仪中返回包含 char c 的字符串

转载 作者:行者123 更新时间:2023-11-30 05:28:48 25 4
gpt4 key购买 nike

尝试创建一个方法findNewLineWithChar(),它返回一个字符串并接受一个扫描器scn和一个charc。它返回包含c的扫描仪行。

我尝试使用字符串来存储 currentLine 的值,但它似乎使我的代码变得复杂并且无论如何都无法提供任何答案。我很想使用 String[],但我得到了 NullPointerException。我到底做错了什么?

public static String findLineWithChar(Scanner scn, char c) {
/*
* findLineWithChar returns line in scanner if line has char c
* @param scanner
* @param c
*/

String result = "";
String[] stringArray = new String[10]; //accepts max 10 lines

int counter = 0; //populate string array from scn
while(scn.hasNextLine()) {
stringArray[counter] = scn.nextLine();
counter++;
}

//iterate through each element in string array
for (int i = 0; i < 10; i++) {
if (stringArray[i].contains(c + "")) {
result = stringArray[i];
System.out.println(stringArray[i]);
break;
} else {
result = "";
}
}

return result;
}

如果我给它一个真实的陈述,它就会起作用,findLineWithChar(new Scanner("看这里!\n看那里!\nExtra extra!"), 'x') 返回 Extra extra!,但 findLineWithChar(new Scanner("看这里!\n看那里!\n额外额外!"), 'q') 返回 NullPointerException。我该如何处理这个问题?

最佳答案

首先,Javadoc 注释位于方法之前(并以 /** 开头)。其次,这里不需要数组;只需进行计数以确保消耗的行数不超过十行(假设这是必要的)。我不会设置返回变量并中断循环,而是在找到匹配行时返回。我也更喜欢 String.indexOf(int)构建一个字符String进行比较。并且,在没有匹配项时添加默认返回值。就像,

/**
* findLineWithChar returns line in scanner if line has char c
*
* @param scanner
*
* @param c
*/
public static String findLineWithChar(Scanner scn, char c) {
int counter = 0;
while (scn.hasNextLine() && counter < 10) {
String line = scn.nextLine();
if (line.indexOf(c) > -1) {
return line;
}
counter++;
}
return "";
}

关于java - 在扫描仪中返回包含 char c 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58001448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com