当前位置: 首页 > 知识库问答 >
问题:

使用用户输入在Java中声明方程的变量[duplicate]

段干庆
2023-03-14
import java.util.Scanner;

public class Main {

    static double a, b, c, x, y, AOS;

    public static void main(String[] args) {
        Main.getA();
    }

    public static void getA() {
        Scanner inputA = new Scanner(System.in);
        System.out.println("Input variable 'a'");
        a = inputA.nextDouble();
        inputA.close();

        System.out.println("A: " + a);

        Main.getB();
    }
    public static void getB() {
        Scanner inputB = new Scanner(System.in);
        System.out.println("Input variable 'b'");
        b = inputB.nextDouble();
        inputB.close();

        System.out.print("B: " + b);

        Main.getC();
    }
    public static void getC() {
        Scanner inputC = new Scanner(System.in);
        System.out.println("Input variable 'c'");
        c = inputC.nextDouble();
        inputC.close();

        System.out.print("C: " + c);

        Main.getAOS();
    }
    public static void getAOS() {
        AOS = (-b + Math.sqrt((b*b)-4*a*c)) / 2*a;
        System.out.println("AOS: " + AOS);

        Main.getPoint1();
    }
    public static void getPoint1() {
        x = AOS;
        y = (a*(x*x)) + (b*x) + c;
        System.out.println("Origin: (" + x + "," + y + ")");

        Main.getPoint2();
    }
    public static void getPoint2() {
        x = AOS + 1;
        y = (a*(x*x)) + (b*x) + c;
        System.out.println("1: (" + x + "," + y + ")");

        Main.getPoint3();
    }
    public static void getPoint3() {
        x = AOS - 1;
        y = (a*(x*x)) + (b*x) + c;
        System.out.println("2: (" + x + "," + y + ")");

        Main.getPoint4();
    }
    public static void getPoint4() {
        x = AOS + 2;
        y = (a*(x*x)) + (b*x) + c;
        System.out.println("3: (" + x + "," + y + ")");

        Main.getPoint5();
    }
    public static void getPoint5() {
        x = AOS - 2;
        y = (a*(x*x)) + (b*x) + c;
        System.out.println("4: (" + x + "," + y + ")");
    }
}

这是我的代码。我试图让用户输入选择变量a、b和c的值,这样程序就可以运行方程。数学工作,但是我在第一次输入后得到一个错误。

共有1个答案

东方华荣
2023-03-14

当您关闭扫描仪时,您也会关闭底层流(在您的case System.in中),然后即使尝试从另一个扫描仪实例访问它,您也无法再次读取它。

因此,最简单的方法是只使用一个扫描仪对象,而不是许多。将代码更改为:

static double a, b, c, x, y, AOS;
static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    Main.getA();
}

public static void getA() {
    System.out.println("Input variable 'a'");
    a = scanner.nextDouble();
    System.out.println("A: " + a);
    Main.getB();
}

public static void getB() {
    System.out.println("Input variable 'b'");
    b = scanner.nextDouble();    
    System.out.print("B: " + b);
    Main.getC();
}
public static void getC() {
    System.out.println("Input variable 'c'");
    c = scanner.nextDouble();
    System.out.print("C: " + c);
    Main.getAOS();
}
public static void getAOS() {
    AOS = (-b + Math.sqrt((b*b)-4*a*c)) / 2*a;
    System.out.println("AOS: " + AOS);
    Main.getPoint1();
}
public static void getPoint1() {
    x = AOS;
    y = (a*(x*x)) + (b*x) + c;
    System.out.println("Origin: (" + x + "," + y + ")");
    Main.getPoint2();
}
public static void getPoint2() {
    x = AOS + 1;
    y = (a*(x*x)) + (b*x) + c;
    System.out.println("1: (" + x + "," + y + ")");
    Main.getPoint3();
}
public static void getPoint3() {
    x = AOS - 1;
    y = (a*(x*x)) + (b*x) + c;
    System.out.println("2: (" + x + "," + y + ")");
    Main.getPoint4();
}
public static void getPoint4() {
    x = AOS + 2;
    y = (a*(x*x)) + (b*x) + c;
    System.out.println("3: (" + x + "," + y + ")");
    Main.getPoint5();
}
public static void getPoint5() {
    x = AOS - 2;
    y = (a*(x*x)) + (b*x) + c;
    System.out.println("4: (" + x + "," + y + ")");
}
}

您可能还希望在不关闭系统的情况下关闭扫描仪。正在进行中。在这种情况下,包装系统。在CloseShieldInputStream中,如下所述

 类似资料:
  • 问题内容: 最近有人问我这在python中是什么意思: 我不知道。我以前从未见过。我检查了文档,没有类似的东西。一个人的建议是它是静态类型声明,但是在文档中也绝对没有任何内容。 有了以上,如果我 失败了 如果我可以,并且type(char)的结果是。但是它不能是静态声明,因为我可以并且type(char)变为。 所以我来这里是为了收集许多SO霸主的智慧。这意味着什么? 问题答案: 您正在查看变量的

  • 我正试图做一个课堂作业,但我遇到了一个问题,我找不到解决方案。我的主方法中有一个变量,名为passwd。我让一个用户输入一个可能密码,输入被存储在变量中。然后检查password变量的长度,以确保它符合长度要求。然后我想让另一个方法chat检查变量的每个字符,看看它是否是一个数字。

  • 问题内容: 当我使用上面的语句时,我没有得到错误(我没有使用结尾),但是当我使用下面的语句时,我得到了这个错误: int类型的文字3244444444超出范围 如果使用,则没有错误。 这是什么原因呢?对于长变量,不强制使用l。 问题答案: 被解释为文字整数,但不适合32位变量。它必须是一个 字面量long值 ,因此它需要一个or或末尾: 更多信息: 原始数据类型,特别是 默认值 和 文字 部分。

  • 问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl

  • 问题内容: 是否可以在Gradle中声明一个可在Java中使用的变量?基本上,我想在build.gradle中声明一些var,然后在构建时(显然)获取它。就像C / C ++中的预处理器宏一样… 一个声明的例子就是这样: 有没有办法做这样的事情? 问题答案: 生成Java常量 你可以使用 产生Android资源 你可以使用或以通常的方式访问它们

  • 问题内容: 我正在尝试对MySQL 5.0中的变量进行一些简单的操作,但是我无法完全正常工作。我已经看到了很多(非常!)DECLARE / SET的不同语法,我不确定为什么……在任何情况下,我都可能会混淆它们/选择错误的语法/混合它们。 这是一个失败的最小片段: 我也尝试过使用BEGIN … END包装它;并作为一个程序。在这种情况下,MySQL Workbench会帮助我:第一行显示“’)’附近