我的程序应该接受一个浮点变量,然后退出。然而,我正在练习一些异常处理的东西,发现了一个问题。当您在这个程序中输入一个字母时,程序当然会抛出一个InputMismatchException,但它会陷入无限循环。我认为我的问题是基于我对try-catch语句和异常处理的误解。
public static void main(String [] args){
Scanner reader = new Scanner(System.in);
boolean done = false;
do{
try{
System.out.print("Enter a number: ");
float number = reader.nextFloat();
done = true;
}
catch (Exception e){
System.out.println("uh oh");
}
}while(!done);
}
如果我使用不同的变量类型,就不会出现这个问题,所以我不确定这是逻辑错误还是浮点变量的问题。
float#nextfloat()
如果抛出inputmismatchexception
,则不使用扫描程序中的标记。因此,当您获得异常和循环时(因为
done
仍然false
),您将再次尝试调用nextfloat()
。由于标记仍然不是可以解析为浮点
的值,扫描程序
再次抛出异常。一次又一次,令人作呕。
您应该使用
hasnextfloat()
检查是否存在可以解析为float
值的令牌。或者使用scanner#next()
使用不正确的值,如Quirliom所建议的。
变量数据类型的作用 程序员写代码时识别用:知道变量中应该存放什么类型的数值 给编译器看的:说明数值在存储时需要的内存空间字节数;说明存储结构 普通变量数据类型转换的本质 将数据的空间大小和数据的存储结构转变后,存入另一个变量空间 数据类型转换会导致数据存储空间大小和存储结构的变化 变量的本质 变量三要素:名称、大小、作用域 既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。
问题内容: 我是tensorflow的新手,我无法理解变量和常量的区别,我知道我们将变量用于方程式,将常量用于直接值,但是为什么代码#1仅工作,为什么代码#2和# 3,请说明在哪种情况下我们必须先运行图形(a),然后运行变量(b),即 在这种情况下,我可以直接执行此命令,即 代码1: 代码2: 代码3: 问题答案: 在TensorFlow中,常量和变量之间的区别在于,当您声明某个常量时,其值以后将
局部变量 实例变量 类变量 全局变量 伪变量 常数 引用常数的优先顺序 您可以通过区分Ruby变量名的首位字符来确定它是局部变量、实例变量、类变量、全局变量还是常数。通常情况下,变量名的第二位字符以后是数字、字母或下划线,但有的内部变量名比较特殊,如“'$'+1个符号”(请参考内部变量)。变量名长度只受内存大小的限制。 局部变量 例: foobar 若标识符首位是小写字母或“_”,则该标识符就是
问题内容: 我正在尝试为两个不同的Linux环境构建一个简单的C程序。在一个设备上,程序运行正常,在另一设备上,程序生成浮点异常。该程序除了从main返回0之外什么都不做,这使我相信与启动代码也许不兼容,也许是ABI? 该程序使用gcc编译,具有以下构建规范: 使用内置规格。目标:i386-redhat-linux配置为:../configure –prefix = / usr –mandir =
我试图为两个不同的Linux环境构建一个简单的C程序。在一个设备上程序运行良好,在另一个设备上程序产生浮点异常。该程序除了从main返回0外什么也不做,这让我相信与启动代码有一些不兼容的地方,也许是ABI? 该程序是用gcc编译的,具有以下构建规范: 使用内置规格。目标:i386-redhat-linux配置为:../configure--prefix=/usr--mandir=/usr/shar
变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据。变量包含的信息被称为变量的值。变量使用用户便于理解脚本操作的名称为用户提供了一种存储、检索和操作数据的途径。 声明和命名变量 命名和声明变量应遵循脚本语言的规则及指导。即使在使用变量前不需要去声明变量,也应养成在编程时声明变量的良好习惯,因为这样有助于防止错误发生。声明一个变量意味着告诉脚本引擎,有一个特定名称的变量,这样就可以在脚