我如何使用这个try catch方法?

时间:2015-04-23 22:54:27

标签: java

我介绍java。该程序应该能够要求10个整数。然后它将整数标记为字符串。然后我应该使用parseInt方法将字符串转换为Int。我也应该抛出一个try catch循环,所以如果有人输入除整数以外的任何东西,它会输出一个无效的语句。 try catch语句应该告诉用户他们输入的是哪个整数,并要求他们重新输入。

继承人的输出应该是什么样的

  

欢迎来到Minilab 10 - 例外。
  输入十个整数   整数#1:50
  整数#2:25
  整数#3:37
  整数#4:98
  整数#5:77
  整数#6:41
  整数#7:44
  整数#8:42
  整数#9:29
  整数#10:z
  z不是整数。请再次输入整数#10:75

     

您输入了50 25 37 98 77 41 44 42 29 75
  输入的整数总和为:518

     

感谢您使用Exceptions计划。

这是我的代码:

import java.util.Scanner;
import java.util.Arrays;
import java.util.List;

public class Exceptions10

{
    public static void main(String[] args)
     {
        String string1, string2, string3, string4, string5, string6, string7,     string8, string9, string10;
        int Int1, Int2, Int3, Int4, Int5, Int6, Int7, Int8, Int9, Int10,     Average;

    Scanner scan = new Scanner(System.in);

    System.out.print("Welcome to Minilab 10 -Exceptions");

    System.out.print("\n\nEnter 10 Integers");

    System.out.print("\n\nInteger 1: ");
    string1 = scan.next();
    System.out.print("Integer 2: ");
    string2 = scan.next();
    System.out.print("Integer 3: ");
    string3 = scan.next();
    System.out.print("Integer 4: ");
    string4 = scan.next();
    System.out.print("Integer 5: ");
    string5 = scan.next();
    System.out.print("Integer 6: ");
    string6 = scan.next();
    System.out.print("Integer 7: ");
    string7 = scan.next();
    System.out.print("Integer 8: ");
    string8 = scan.next();
    System.out.print("Integer 9: ");
    string9 = scan.next();
    System.out.print("Integer 10: ");
    string10 = scan.next();



    try
    {
    Int1 = Integer.parseInt(string1);
    Int2 = Integer.parseInt(string2);
    Int3 = Integer.parseInt(string3);
    Int4 = Integer.parseInt(string4);
    Int5 = Integer.parseInt(string5);
    Int6 = Integer.parseInt(string6);
    Int7 = Integer.parseInt(string7);
    Int8 = Integer.parseInt(string8);
    Int9 = Integer.parseInt(string9);
    Int10 = Integer.parseInt(string10);
    }
    catch (NumberFormatException e)
    {
            System.out.println("Integer---  is not an integer. Please enter integer--- again: ");
    }


    int [] value = {Int1, Int2, Int3, Int4, Int5, Int6, Int7, Int8, Int9,     Int10};

    System.out.print("\nYou entered: ");

    for (int i = 0; i < value.length; i++)
    {
    System.out.print(value[i]);
    System.out.print(" ");
    }
        System.out.print("\n\n");

        Average = (Int1 + Int2 + Int3 + Int4 + Int5 + Int6 + Int7 + Int8 + Int9     + Int10)/value.length;

        System.out.print("The average of the integers is " + Average +              "\n\n");


    }
}

我的问题是我的try catch语句。我不知道在哪里或如何放置它。

4 个答案:

答案 0 :(得分:0)

以下方法将尝试将String解析为int并继续请求输入,直到可以完成。

public static int parse(String str, int number){
    while(true){
        try{
            // Attempt to parse it as an int
            return Integer.parseInt(str);
        catch(Exception e){
            // Request the input again
            System.out.println("Integer #" + number + " was entered incorrectly, please enter it again: ");
            str = scan.next();
        }
    }
    return 0; // Stop compiler from complaining about no return statement
}

如果要将输入放入列表中,则可以遍历列表,每次都调用此方法。这也可以使代码更紧凑和可维护。

答案 1 :(得分:0)

有时,我们可以在输入后检查输入。 我们只使用十次循环作为Do..while,我们可以在有效输入后减少计数器。如果输入无效,只需继续循环,输出为:

do{
    try{
        System.out.print("\n\nInteger "+counter+": ");
        Int[counter] = Integer.parseInt(scan.next());
        counter++;
    }
    catch{
        continue;
    }
}while(counter>10);

我们也可以将这个想法应用到代码的最后部分。只需要改变循环的条件。

答案 2 :(得分:0)

正如我在评论中所说,我强烈建议使用数组。这样你就可以在 one for循环中做一切相当简单的事情,而不是创建10个字符串和10个整数(想象一下,如果要求你为100个字符串执行此操作)。

String input;
int[] integers = new int[10];
boolean parsed;
Scanner scan = new Scanner(System.in);

System.out.println("Welcome to Minilab 10: Exceptions");
System.out.println("Enter 10 Integers");

for (int i = 0; i < integers.length; i++) {
    System.out.println("Integer " + (i+1) + ": ");
    input = scan.next();
    parsed = false;
    while (!parsed) {
        try {
            integers[i] = Integer.parseInt(input);
            parsed = true;
        } catch (NumberFormatException e) {
            System.out.println("Input " + (i+1) + " is not an integer. Please enter it again: ");
            input = scan.next();
        }
    }
}

答案 3 :(得分:0)

由于您的程序在输入无效数字时需要重新提示用户,因此您需要提示您的提示存在于一旦输入正确的数字就会中断的循环中。

    int[] ints = new int[10];
    int i = 0;
    while (i < ints.length) {
        int prettyInt = i + 1;
        System.out.print("Integer " + prettyInt + ": ");
        try {
            ints[i] = scanner.nextInt();
            i++; // continue to next int
        } catch (Exception e) {
            System.out.println("Integer " + scanner.next()
                    + " is not an integer. Please enter integer " + prettyInt + " again: ");
        }
    }