Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
167 views
in Technique[技术] by (71.8m points)

java - Unreported IOException? What is wrong with this code?

I am working on some code for homework and for the life of me can't figure out why this won't run. It ran until I added in the methods for file reading, which I know worked in another program. I took the code directly from some of my other work. So, can someone much better at Java than I tell me what I am doing wrong to have this problem? As this is homework please don't tell me how to fix any other problems, but I wouldn't discourage hints about them.

import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;

public class vowels_r_us {

//for file reading
private static FileInputStream inFile;
private static InputStreamReader inReader;
private static BufferedReader reader;

//pasrsing input from file
private static StringTokenizer strTkn;

public static void main(String[] args) 
{

    initFile(); //prepare file for reading

    while (reader.ready())//iterate as long as there is more avaliable data
    {
        String word, suffix, line;
        line = getWordSuffix();
        word = line.substring(0, line.indexOf(' '));
        suffix = line.substring(line.indexOf(' '));


    }
}

/*CONJUGATION METHODS*/
static String pluralize(String s)
{
    String pluralForm;
    switch (classifyEnding(s))
    {
        case 'c':
            pluralForm = s.concat("GH");
            break;
        case 'v':
            pluralForm = s.substring(0, s.length() - 1).concat("G");//drop last letter add G
            break;
        case 'd':
            pluralForm = s + s.charAt(s.length() - 1) +"H";//double last letter, then add H
            break;
        default:
            pluralForm = "If you are getting this something is broken, have fun debugging.";
            break;
    }
    return pluralForm;
}

static String addSuffix(String word, String suffix)
{
    String suffixAdded;
    switch (classifyEnding(word))
    {
        case 'c':
            suffixAdded = word + suffix;
            break;
        case 'v':
            if(isVowel(suffix.charAt(0)))
            {
                suffixAdded = word + suffix.substring(1);//word + drop first letter of suffix then add suffix
            }
            else
            {
                suffixAdded = word + suffix.charAt(0) + suffix;//word + first letter of suffix + suffix
            }
            break;
        case 'd':
            if(isVowel(suffix.charAt(0)))
            {
                suffixAdded = word + suffix.charAt(0) + suffix;//word + first letter of suffix + suffix
            }
            else
            {
                suffixAdded = trimRepeatSequence(word) + suffix;
            }
            break;
        default:
            suffixAdded = "If you are getting this something is broken, have fun debugging.";
            break;
    }
    return suffixAdded;
}
/*END CONJUGATION METHODS*/

/*STRING MODIFICATION AND TESTING METHODS*/
//removes lefmost vowel or consonant from sequence
static String trimRepeatSequence(String s)
{
    String editedString = "";
    boolean vBasedEnding = isVowel(s.charAt(s.length() - 1));

    for (int i = s.length() - 1; i >= 0; i--)
    {
        if (isVowel(s.charAt(i)) != vBasedEnding)
        {
            editedString = s.substring(0, i+1) + s.substring(i+2, s.length());
            break;
        }
    }

    return editedString;
}

/* classify endings in to three grammatical categories, single vowel ending 'v', single consonant ending 'c', double type ending 'd'
 */
static char classifyEnding(String s)
{
    char grammaticalClass;
    if (isVowel(s.charAt(s.length()- 1)) == isVowel(s.charAt(s.length()- 2)))
    {
        grammaticalClass = 'd';
    }
    else
    {
        grammaticalClass = isVowel(s.charAt(s.length()- 1)) == true? 'v' : 'c';
    }
    return grammaticalClass;
}

static boolean isVowel(char c)
{
    boolean b;//rename
    switch (Character.toLowerCase(c))
    {
        case 'a': case 'c':
        case 's': case 'l':
            b = true;
            break;

        default:
            b = false;
            break;
    }
    return b;
}
/*END STRING MODIFICATION AND TESTING METHODS*/

/*FILE READER METHODS*/
//read file for input
public static void initFile() throws IOException
{
    inFile = new FileInputStream ("C:\Users\Tom\Dropbox\!!VHSAPCSData\VHSP35data.txt");
    inReader = new InputStreamReader(inFile);
    reader = new BufferedReader(inReader);
}

public static String getWordSuffix() throws IOException
{
    String line;

    line = reader.readLine();

    return line;
}
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to wrap your IO code in a try / catch:

import java.io.*;
import java.util.Scanner;

public class ScanXan {
    public static void main(String[] args) throws IOException {

        Scanner s = null;

        try {
            s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));

            while (s.hasNext()) {
                System.out.println(s.next());
            }
        } finally {
            if (s != null) {
                s.close();
            }
        }
    }
}

taken from: http://docs.oracle.com/javase/tutorial/essential/io/scanning.html


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...