使用try和catch来获取输入

时间:2014-09-04 09:55:34

标签: java

所以我只是试图用更复杂的代码创建一个简单的程序。 我被要求做的是写一个控制它是正数还是负数的程序(我知道,这很容易)。

我尝试做的是捕捉输入内容,因此如果不是float,则会说使用逗号代替点或输入数字而不是String。< / p>

package example1;

import java.util.InputMismatchException;
import java.util.Scanner;

public class numbritest
{
public static void main(String[] args)
{

    float num;

    Scanner sisse1 = new Scanner(System.in);
    try
    {
        System.out.println("Sisesta number:");
        System.out.println("Kaks komakohta on lubatud");
        num = sisse1.nextFloat();
    }

    catch(InputMismatchException exception) //juhul kui sisestab miskit muud
    {
        System.out.println("Kontrolli kas kasutasid koma!");

    }

    if (num < 0) //kui arv väiksem
    {
        System.out.println("Number " +num +" on negatiivne.");
        System.out.println("Seega on arv väiksem nullist");

    }
    else //Kui arv on suurem või võrdne
    {
        System.out.println("Number " +num +" on positiivne.");
        System.out.println("Positiivsed arvud on suuremad");
        System.out.println("või võrdsed nulliga.");

    }
    System.out.println();
    System.out.println("Programm lõpetada!");
  }
  }

很抱歉,这是爱沙尼亚语,但我希望你明白我的观点。

4 个答案:

答案 0 :(得分:1)

浮点数更改为浮点数= 0.0f; ,它应该可以正常工作

答案 1 :(得分:0)

你应该做的是创建一个循环并要求用户输入数字,只要数字不正确: 所以这段代码:

try
{
    System.out.println("Sisesta number:");
    System.out.println("Kaks komakohta on lubatud");
    num = sisse1.nextFloat();
}
catch(InputMismatchException exception) //juhul kui sisestab miskit muud
{
    System.out.println("Kontrolli kas kasutasid koma!");

}

应该在循环中 - 例如:

boolean incorrectNumberFormat;
do
{
    incorrectNumberFormat = false;
    try
    {
        System.out.println("Sisesta number:");
        System.out.println("Kaks komakohta on lubatud");
        num = sisse1.nextFloat();
    }

    catch(InputMismatchException exception) //juhul kui sisestab miskit muud
    {
        System.out.println("Kontrolli kas kasutasid koma!");
        sisse1.nextLine();
        incorrectNumberFormat = true;  //repeat the loop;
    } 
} while(incorrectNumberFormat);

顺便说一下 - 逗号不会生成异常(对我来说3,3没有),但3%3应该会给你例外。 循环可以通过各种方式创建,这只是一个简单的例子。

答案 2 :(得分:0)

我将其更改为

Float num = null;

(注意我们现在使用Float对象而不是float原语,因此它可以是null),然后使用while条件:

while (num == null) {
  try {
    //...
    num = sisse1.nextFloat();
  } catch (InputMismatchException e) {
    //give error
  }
}

num行成功之前,这不会将任何内容放入num = ...,因此只要失败,它就会保留null。这比将其设置为0.0f要好,否则如果用户输入零,则会导致问题。

答案 3 :(得分:0)

使用前初始化本地变量;
在这些情况下编译器认为try块可以执行或不执行,以便num.nextFloat()可以执行或不执行,因此编译器抛出错误:变量num可能尚未初始化。  所以改变浮点数;浮点数num = 0.0f;