本质上,此代码采用一个文件(这是文本的几个段落)并计算每个字母出现的次数并将其打印到控制台上。虽然我已经完成了计算方面的所有代码,但我遇到了异常。当我运行它时,它显示:
// Document your class here
import java.util.Scanner;
import java.io.File;
import java.io.FileInputStream;
public class LetterCount {
public final static String FILENAME = "testFile.txt";
// Driver to test LetterInventory class
public static void main(String[] args) {
Scanner inputFile = null;
try {
inputFile = new Scanner(new File(FILENAME));
} catch (Exception e) {
System.out.println("File could not be opened: " + FILENAME);
System.exit(0);
}
int[] counts = countOccurrences(inputFile);
displayTable(counts);
resetTable(counts);
}
public static int[] countOccurrences (Scanner inputFile) {
int[]counts = new int[26];
char[] characters = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
while (inputFile.hasNextLine()) {
String theWord = inputFile.next();
theWord = theWord.toLowerCase();
for (int j = 0; j < theWord.length(); j++) {
for (int counter = 0; counter < 26; counter++) {
if (theWord.charAt(j) == characters[counter]) {
counts[counter] += 1;
}
}
}
}
return counts;
}
public static void displayTable (int[] counts) {
for (int index = 0; index < 26; index++) {
System.out.println((char)('a' + index) + ":\t" + counts[index]);
}
}
public static void resetTable (int[] counts) {
System.out.println();
for (int index = 0; index < 26; index++) {
System.out.println((char)('a' + index) + ":\t0");
}
}
}
这是我的代码:
Route::get('orders/delete/{id}',array
('as'=>'delete',
'uses'=>'Admin\OrdersController@delete'));
当我点击NoSuchElementException的突出显示部分时,我看到它指的是我创建的字符串。我做错了什么,我该怎么做才能解决它?
答案 0 :(得分:2)
用于读取数据的方法应与用于检查是否有更多数据的方法类型相同。
在您的while语句中,您使用inputFile.hasNextLine()
,因此在其后的行上,您应该使用inputFile.nextLine()
(而不是像现在这样使用inputFile.next()
。)
或者,您可以更改while语句以使用inputFile.hasNext()
。
答案 1 :(得分:0)
无保证,但请尝试在inputFile.hasNext()
而不是while
中使用inputFile.hasNextLine()
。下一个行可用并不一定与下一个词可用相同。
答案 2 :(得分:0)
您不需要characters
数组(您可以使用显示的相同数学运算来执行counts
的添加)。此外,您应该与拨打Scanner.hasNextLine()
和Scanner.next()
的方式保持一致(使用hasNext()
检查下一个)。像,
public static int[] countOccurrences(Scanner inputFile) {
int[] counts = new int[26];
while (inputFile.hasNext()) {
String theWord = inputFile.next().toLowerCase();
for (char ch : theWord.toCharArray()) {
if (Character.isLetter(ch)) {
counts[ch - 'a']++;
}
}
}
return counts;
}