我想在另一种方法中使用主变量(扫描仪)
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)。我知道当我使用参数时它会变得更好,但是对我来说太难了......请帮助
将变量h和r声明为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 对象的位置,但我认为这不是您真正想要的。我认为您真正要求的是访问特定变量,例如 h 和 r ,这些变量在 main() 方法。
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)。我知道当我使用参数时它会变得更好,但是对我来说太难了......请帮助
将变量h和r声明为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 对象的位置,但我认为这不是您真正想要的。我认为您真正要求的是访问特定变量,例如 h 和 r ,这些变量在 main() 方法。