我想在另一种方法中使用主变量(扫描仪)

I want to use main variable(Scanner) in another method

import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;
class Graph_mod extends Frame {
public static void main( String[] args ) {
    Scanner input = new Scanner(System.in);
    System.out.println("enter v :");
    double v = input.nextDouble();
    System.out.println("enter a :");
    double a1 = input.nextDouble();
    double a2 = a1*Math.PI/180;
    double t = v*Math.sin(a2)/9.8;
    double h = Math.pow(v*Math.sin(a2), 2)/(2*9.8);

I want to use this variable(h, r)

    double r = Math.pow(v,2)*Math.sin(2*a2)/9.8;
    System.out.println("t is" + t );
    System.out.println("h is" + h );
    System.out.println("r is " + r );
new Graph_mod( "graph");
}
@Override
public void paint( Graphics g )
{
g.setColor( new Color( 0x000000 ) );
g.drawLine( 0, 300, 600, 300 );
g.drawLine( 300, 0, 300, 600 );

for( int i = 0; i < 6; i++ )
{
g.drawLine( i*100 , 298 , i*100, 302 );
g.drawLine( 298, i*100, 302, i*100 );
}


g.setColor( new Color( 0xFF0000 ) );
int px=-1;
int py=300;
int x, y;
for( x = 0; x < 600; x++ )
{
y = My_function( x );
g.drawLine( px, py,x, y );
px = x;
py = y;
}
}

private int My_function( int inX )
{
double x, y;
int outY;
x = (inX - 300.)/ 100.;

In here

y = (-4*h/Math.pow(r,2) * x * x) + (4*h/r*x);
outY = (int)( y * -100. + 300. );
return outY;
}

public Graph_mod( String title )
{
super( title );

addWindowListener( new WindowAdapter(){
public void windowClosing( WindowEvent we ){
System.exit( 0 );
}
} );

setBounds( 0, 0, 600, 600 );
setVisible( true );
}
}

想做一个抛物线运动计算器的代码,但是在做图的过程中遇到了一些问题。我导入了扫描仪并在主要方法中使用,但我不能在其他方法中使用它(My_funtion)。我知道当我使用参数时它会变得更好,但是对我来说太难了......请帮助

将变量hr声明为class全局变量,例如:

import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;

class Graph_mod extends Frame {
    private static double h = 0.0;   // Place variable here ***
    private static double r = 0.0;   // Place variable here ***

public static void main( String[] args ) {
    //..........................
    //..........................
    //..........................
    h = Math.pow(v*Math.sin(a2), 2)/(2*9.8);
    r = Math.pow(v,2)*Math.sin(2*a2)/9.8;
    //..........................
    //..........................
}

但是,因为这些变量在 main() 方法中使用,所以它们必须声明为 static 因为 main() 方法本身是静态的。但是,即使变量声明为静态,也可以在其他非静态 class 方法中使用。

如果您想要在某些或所有 class 方法中使用的实际上是 Scanner 对象本身,则将其声明为 class 全局,例如:

import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;

class Graph_mod extends Frame {
    Scanner input = new Scanner(System.in);  // Place scanner here ***
    private static double h = 0.0;
    private static double r = 0.0;

public static void main( String[] args ) {
    System.out.println("enter v :");
    double v = input.nextDouble();
    System.out.println("enter a :");
    double a1 = input.nextDouble();
    double a2 = a1*Math.PI/180;
    double t = v*Math.sin(a2)/9.8;
    h = Math.pow(v*Math.sin(a2), 2)/(2*9.8);
    r = Math.pow(v,2)*Math.sin(2*a2)/9.8;
    //..........................
    //..........................
}

现在您可以在 class 中声明的任何方法中使用 input.nextDouble() 方法全局声明 Scanner 对象的位置,但我认为这不是您真正想要的。我认为您真正要求的是访问特定变量,例如 hr ,这些变量在 main() 方法。