0

所以我想为大学写一个简单的java程序,我是这个java东西的新手。我在编译时不断收到错误,方法 printreciept 中的“错误 - 找不到符号”。我知道这就像无法访问 main 中的变量。有人可以帮忙吗?我知道如果我修复它,我可能会遇到很多错误,但我宁愿从这里开始!PS对不起所有的代码:/

import java.util.Scanner;

public class Order {

public static void main (String[] args) {

    String clubcard;
    double clubcard_discount;
    double special_discount;
    double balance; 
    double final_balance; 
    int apples;
    int oranges;
    int apples_cost;
    int oranges_cost;

    final Scanner scanner = new Scanner( System.in);
    System.out.println("How Many Bags of Apples?");
    apples = scanner.nextInt( );
    System.out.println("How many bags of Oranges?");
    oranges = scanner.nextInt( );
    System.out.println("Do you have a clubcard? Yes/No");
    clubcard = scanner.nextLine();

    if(clubcard == "Yes") {
        clubcard_discount = clubcard_discount - 1.0;
        final_balance = final_balance - (balance / 100 * 10);
    }

    else if(clubcard == "No") {
        special_discount = 0.0;
    }   

    if(apples == 3) {
        special_discount = -1.0;
        balance = balance - 1.0;
    }

}

//Calculating the cost of apples and oranges
public void calculate_apples (final double apples_cost ) {
    apples_cost = apples * 1.0;
}

public void calculate_oranges (final double oranges_cost ) {
    oranges_cost = oranges * 1.25;
}

//Printing the receipt
public static void printReceipt() {
    System.out.println("Bags of apples: " + apples);
    System.out.println("Bags of oranges: " + oranges);
    System.out.println("Clubcard: " + clubcard);
    System.out.println( );
    System.out.println("Price for apples: " + apples_cost);
    System.out.println("Special discount: " + special_discount);
    System.out.println("Price of oranges: " + oranges_cost);
    System.out.println("Total: " + balance);
    System.out.println("Clubcard discount: " + clubcard_discount);
    System.out.println( );
    System.out.println("Final price: " + final_balance);
    System.out.println( );
    System.out.println("Thanks for doing business with CS2500.");

  }

 }
4

5 回答 5

3

您已将所有变量声明为main方法内的局部变量,因此它们不在范围外main。要让其他方法可以访问它们,您可以执行以下操作之一:

  • 将它们作为参数传递给方法
  • 将它们声明为static任何方法之外的类变量,但在类内部。
于 2013-10-21T16:23:58.137 回答
1

您可以添加使它们成为静态的变量。

    public class Order {

    static String clubcard;
    static double clubcard_discount;
   static  double special_discount;
  static   double balance; 
  static   double final_balance; 
  static   int apples;
   static  int oranges;
   static  int apples_cost;
   static  int oranges_cost;

 public static void main (String[] args) { ...

试试这个,让我们知道。

于 2013-10-21T16:25:22.793 回答
0

你没有传递变量,这就是问题所在。您在 main 中声明了它们。但是,如果您在 main 方法之前将它们声明为静态变量,那将起作用。

于 2013-10-21T16:24:30.210 回答
0

在任何方法中声明的变量仅适用于该方法(本地范围)。在类级别声明这些方法或将它们作为参数从 main 传递(根据用例,如果从 main 调用方法)。

于 2013-10-21T16:26:05.523 回答
0

您传递的变量仅在 main 中可见。函数 printReceipt() 无法看到变量,因为它们超出了它的可见范围。

在这里,您可以尝试几个选项,并且该程序将起作用:

  • 将变量声明为公共类 Order 的数据成员,而不是将它们保留为 main() 函数的成员(最佳选择)。

    public class Order{
        static String clubcard;
        static double clubcard_discount;
        static double special_discount;
        static double balance; 
        static double final_balance; 
        static int apples;
        static int oranges;
        static int apples_cost;
        static int oranges_cost;
    
    //main() and other functions...
    
    }
    

或者

  • 将数据成员作为参数传递给 PrintReceipt() 函数(尽管这可能会使您的函数有点混乱)。

    public static void printReceipt(int apples, int oranges, .... .... ){

       //...defining your function 
    

    }

希望这可以帮助!

于 2013-10-21T16:39:04.930 回答