You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:50:26