考虑以下代码:
private static void colourRead(String s) throws IOException {
FileReader readhandle = new FileReader("C:\\****\\****");
BufferedReader br = new BufferedReader(readhandle);
String line = null;
while ((line = br.readLine()) != null) {
ColourInput(); //there's an error here
}
br.close();
readhandle.close();
}
private static void ColourInput(String s) {
char letter;
String fullWord;
Scanner kb = new Scanner(System.in);
System.out.print("Enter whatever: ");
fullWord = kb.nextLine();
System.out.println(fullWord);
for (int i = 0; i < fullWord.length(); i++) {
letter = fullWord.charAt(i);
switch (Character.toUpperCase(letter)) {
case 'A': {
Blue();
}
break;
}
}
}
我可以携带
line
来自colourRead方法的变量,并以某种方式将其分配给
fullWord
ColourInput()
方法中的变量?
我正在尝试读取文本文件,并输出与每个字母关联的某些颜色。我不想在colourRead方法中创建一个新的switch语句,因为很明显,这是一个糟糕的编程习惯。
请帮忙吗?
如果你仍然不确定我要问什么,我会重新编辑
编辑:问题是在调用ColourInput(line)方法后,Scanner方法开始工作(原始代码)。我不想删除我的扫描程序方法,我希望它“跳过”扫描程序方法,并继续进入for循环和切换语句。
答案 0 :(得分:3)
您没有将字符串传递给ColourInput
尝试
ColourInput(line);
还值得一提的是,您的代码读取文件并不安全,您应该尝试读取文件,捕获IOException
并在finally
子句中关闭文件,如果您的代码在while
循环中某处崩溃,您的文件可能会保持打开状态
答案 1 :(得分:1)
如果我理解正确,您希望能够使用ColourInput
方法的结果重复ColourRead
方法的功能。
private static void colourRead() throws IOException
{
FileReader readhandle = new FileReader("C:\\****\\****");
BufferedReader br = new BufferedReader(readhandle);
String line = null;
while((line = br.readLine()) != null)
{
ColourText(line); //there's an error here
}
br.close();
readhandle.close();
}
private static void ColourInput()
{
String fullWord;
Scanner kb = new Scanner(System.in);
System.out.print("Enter whatever: ");
fullWord = kb.nextLine();
System.out.println(fullWord);
ColourText(fullWord);
}
private static void ColourText(String text)
{
char letter;
for (int i = 0; i < text.length(); i++)
{
letter = text.charAt(i);
switch(Character.toUpperCase(letter))
{
case 'A':
{
Blue();
}
break;
}
}
无论是从文件中读取还是从键盘输入(使用ColourText
方法更改颜色),都可以为文本着色。但正如其他人提到的那样,你也应该在文件中添加阅读代码。
编辑:你也可以从前两种方法中删除String s
变量,因为它们没有在任何地方的方法中使用。