捕获错误以结束打印机

时间:2015-01-12 23:28:44

标签: java html try-catch finally

您好我正在尝试创建一个程序,该程序允许用户在运行时选择他们是否希望我在单独的文件中使用纯文本控制台或Web浏览器上的html。目前似乎唯一出现的错误是捕获应该是最终的,但如果我将其更改为最终它永远不会关闭我的编剧。谢谢你的帮助。

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.PrintWriter;

import java.lang.reflect.Array;

import java.util.Scanner;

public class HTML {

    public static void main(String[] args) throws FileNotFoundException {

        int scorehome = 0;
        int scoreaway = 0;
        int invalid = 0;
        int goals = 0;
        int valid = 0;

        Scanner scanner = new Scanner(System.in);

        System.out.println("Do you want to generate plain (T)ext or (H)TML");

        String input = scanner.nextLine();

        boolean generateHTML = false;       

        if ( input.equalsIgnoreCase("H") ) {
            generateHTML = true;
        }
        String line;    // stores the each line of text read from the file

        PrintWriter online = new PrintWriter(new FileWriter("C:/temp/htmloutput.html"));

        while ( scanner.hasNext() ) {
            line = scanner.nextLine();  // read the next line of text from the file

            //split the line
            String [] elements = line.split(":");


                //System.out.println("Element " + (i+1) + " was : " + elements[i]);
                if (elements.length == 4) {


                String home = elements[0].trim();
                String away = elements[1].trim();
                String homescore = elements[2].trim();
                String awayscore = elements[3].trim();

                boolean homescoreVal = false;
                boolean awayscoreVal = false;
                boolean homenameVal = false;
                boolean awaynameVal = false;

                    try {   // "try" is a special statement which allows us to deal with "exceptions"
                        scorehome = Integer.parseInt(homescore);    // attempt to convert the String into an Integer type value
                        homescoreVal = true;
                    } catch (NumberFormatException e) {
                        homescoreVal = false;
                    }
                    try {
                        scoreaway = Integer.parseInt(awayscore);    // attempt to convert the String into an Integer type value
                        awayscoreVal = true;
                    } catch (NumberFormatException e) {
                        homescoreVal = false;
                    }

                    if (home.length() <= 1) {
                        homenameVal = false;
                    } else {
                        homenameVal = true;
                    }

                    if (away.length() <= 1) {
                        awaynameVal = false;
                    } else {
                        awaynameVal = true;
                    }

                    if (homescoreVal == true && awayscoreVal == true
                            && homenameVal == true && awaynameVal == true){ 

                        System.out.println(home + " [" + scorehome + "] | "
                                + away + " [" + scoreaway + "]\r");



                    goals = (scorehome + scoreaway) + goals;

                    valid = 1 + valid;
                    } else {
                        invalid = 1 +invalid;
                    }

                }

                else {
                    invalid = 1 + invalid;
                }
            }

        System.out.println("\rValid match was " + valid);
        System.out.println("Total goals scored was " + goals);
        System.out.println("Invalid match count was " + invalid + ".");

        System.out.println("\nEOF");    // Output and End Of File message.

        if (generateHTML == true) {
            online.println("\rValid match was " + valid);
            online.println("Total goals scored was " + goals);
            online.println("Invalid match count was " + invalid + ".");
            }

        String locationOfFile = "C:\temp\\htmloutput.html";

        try { 
            Runtime.getRuntime().exec("cmd.exe /C start " + locationOfFile);

        }   catch {
            System.err.println("Error: unable to open " + locationOfFile);
            }
        }
    }

错误消息:线程“main”中的异常java.lang.Error:未解决的编译问题:     语法错误,插入“Finally”以完成TryStatement

at HTML.main(HTML.java:117)

1 个答案:

答案 0 :(得分:0)

就我已经阅读过您的代码而言,您的代码逻辑没有意义,并且没有您正在寻找的关注

你应该坐下来将问题分解成碎片

  1. 如果您的用户键入H选择HTML或T为纯文本,您需要弄清楚会发生什么。
  2. 例如,

    将这段代码作为蓝图

        System.out.println("Either enter t for plain text\n or h for HTML");
        Scanner input = new Scanner(System.in);
        String  answer = input.nextLine();
    
        if(answer.equalsIgnoreCase("H")){
            System.out.println("wowwwwww you chose HTML");
    
            }
        else if( answer.equalsIgnoreCase("T")){
            System.out.println("wowwwwww you chose plain text");
         }
    }
    
    1. 之后你需要看看在每种情况下你想做什么,一般来说你可以按照下面的说法进行操作

        1. you gonnna read your file that you have how? using Scanner 
        2. when you have your data inside a array or whatever data structure 
        3. you gonna do your manipulation 
        4.the last job is to write back to wherever you wanna 
      
    2. 您应该了解有关try catch块的一些要点

      1. 你可以尝试使用finally块而不使用catch块
      2. 如果你的try块出现问题,你的catch块会告诉你你的问题,如
      3. 例如:

         try{
                System.out.print(7/0);
            }catch(Exception e){
                System.out.println(e);
            }finally{
                System.out.println("no matter what I gonna be executed");
            } 
        

        在你的尝试块中,你试图潜入一个七乘七的数字,这会抛出异常

        1. 无论您看到什么
        2. ,您的终结块都将被执行
        3. 如果你的try块工作,你发现你的catch块从未被执行过,而你的finally块又被执行了
        4. 如果您的try块出现问题,其他语句将不会执行,如果您有
        5. ,您将转到catch块