![](/img/trans.png)
[英]How can I use a Variable from a Class Runner to use in a Method in another Class? (BlueJ, Java)
[英]Can I use class variable in class method in Java?
我正在學習 Java 並自己練習。 我試圖創建一個 class 變量String username
,我想我會得到結果“Hi Nat”,因為方法engHi()
與變量在同一個 class 中。
class Greetings{
String userName = "Nat";
public static void engHi(String userName){
System.out.println("Hi "+userName);
}
}
public class Main {
public static void main(String[] args) {
Greetings.engHi();
}
}
我收到了這條信息。
Error:(11, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
required: java.lang.String
found: no arguments
reason: actual and formal argument lists differ in length
然后我在方法engHi()
中添加了this.username = username
class Greetings{
String userName = "Nat";
public static void engHi(String userName){
this.userName = userName;
System.out.println("Hi "+userName);
}
}
public class Main {
public static void main(String[] args) {
Greetings.engHi();
}
}
結果是
Error:(12, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
required: java.lang.String
found: no arguments
reason: actual and formal argument lists differ in length
我認為由於該方法在同一個 class 中,因此我認為該方法將“自動”獲取變量用戶名,因此在調用該方法時我沒有輸入任何參數。 所以..這意味着方法不會從同一個 class 中獲取任何變量?
您的代碼的問題在於您的方法engHi()
需要將用戶名字符串作為參數發送。 如果你刪除engHi()
的參數,這個錯誤應該 go 消失。
class Greetings{
String userName = "Nat";
public static void engHi(){ //nothing required to be passed in when you call engHi()
System.out.println("Hi "+userName);
}
}
public class Main {
public static void main(String[] args) {
Greetings.engHi();
}
}
在呼叫中添加用戶名,例如Greetings.engHi("Nat");
或從接受 function 中刪除它
public static void engHi(){
}
您的方法 engHi 期望在Greetings.engHi();
該錯誤與使用 class 變量幾乎沒有關系。
相反,如果使用N arguments 聲明方法,則需要使用N arguments 調用它。
聲明: engHi(String userName)
- 1 個參數。
呼叫: Greetings.engHi()
- 0 arguments。
參數計數不匹配是語言違規。
此外,在這兩行中:
String userName = "Nat";
public static void engHi(String userName){
兩次出現的username
不是指同一件事。 第一個聲明了 class 實例的成員; 第二個是engHi
方法的形式參數,它將設置為調用者作為實際參數提供的任何值。
static
方法只能訪問static
變量。 非static
方法可以訪問static
和非static
變量。
在 engHi() 方法中創建 Greetings class 的 object。
public static void engHI() {
Greetings greetings = new Greetings();
System.out.println("Hi " + greetings.userName);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.