所以我只是试图用更复杂的代码创建一个简单的程序。 我被要求做的是写一个控制它是正数还是负数的程序(我知道,这很容易)。
我尝试做的是捕捉输入内容,因此如果不是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!");
}
}
很抱歉,这是爱沙尼亚语,但我希望你明白我的观点。
答案 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;