在main方法外使用Scanner出现重复输入问题及解决方法
问题:Scanner输入重复触发,需多次输入后才输出结果
我在main方法外使用Scanner时遇到一个问题:输入操作会重复执行,重复次数和创建的test类对象数量完全一致,必须完成所有输入后,main方法里的输出内容才会显示出来。
原代码如下:
package galitkami; import java.util.Scanner; public class test { Scanner myObj = new Scanner(System.in); {System.out.print("Enter Carat Value: ");} int c = myObj.nextInt(); double g = 0.20; double cg = c*g; double gm = cg*1000; double mg = gm*0.00220462/1000; public static void main(String[] args) { test a = new test(); test b = new test(); test c = new test(); System.out.println("Carats in Grams: "+a.cg); System.out.println("Grams in Milligrams: "+b.gm); System.out.println("Milligrams in Pounds: "+c.mg); } }
我的预期是:输入一次“Enter Carat Value”对应的数值后,就能自动显示main方法中的输出内容。
解决方案
已经找到解决办法,修改后的代码如下:
import java.util.Scanner; public class test { static Scanner myObj = new Scanner(System.in); {System.out.print("Enter Carat Value: ");} final int c = myObj.nextInt(); double g = 0.20; double cg = c*g; double gm = cg*1000; double mg = gm*0.00220462/1000; public static void main(String[] args) { test a = new test(); System.out.println("Carats in Grams: "+a.cg); System.out.println("Grams in Milligrams: "+a.gm); System.out.println("Milligrams in Pounds: "+a.mg); } }
核心思路是只创建一个test类对象,通过这个对象调用所有需要的属性即可,避免多次创建对象触发多次输入逻辑。
内容的提问来源于stack exchange,提问作者Skyln
相关产品推荐
相关产品推荐

