簡體   English   中英

在方法之間傳遞變量?

[英]Passing Variables between methods?

所以我試着為大學寫一個簡單的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.");

  }

 }

您已將所有變量聲明為main方法中的局部變量,因此它們不在main之外的范圍內。 要使其他方法可以訪問它們,您可以執行以下操作之一:

  • 將它們作為參數傳遞給方法
  • 將它們聲明為任何方法之外的static類變量,但在類中。

你沒有傳遞變量,這就是問題所在。 你在主要宣布他們。 但是,如果在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;

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

試試這個並告訴我們。

在任何方法中聲明的變量僅適用於該方法(本地范圍)。 要么在類級別聲明這些方法,要么將它們作為參數從main傳遞(根據用例,如果從main調用方法)。

您傳遞的變量僅在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 

    }

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM