类之间的Java更新全局变量
我有一个名为randomWord的公共静态字符串。在一个不同的类运行一个方法之后,我希望它的“值”改变。例如:具有公共静态字符串randomWord的类变量;类1执行一些操作并设置变量。randomWord=orange。第二类需要得到新单词。更新类变量中的randomWord的可能方法是什么 提前谢谢类之间的Java更新全局变量,java,global-variables,Java,Global Variables,我有一个名为randomWord的公共静态字符串。在一个不同的类运行一个方法之后,我希望它的“值”改变。例如:具有公共静态字符串randomWord的类变量;类1执行一些操作并设置变量。randomWord=orange。第二类需要得到新单词。更新类变量中的randomWord的可能方法是什么 提前谢谢 public final class Variables { public static String randomWord; } 阶级^ public static
public final class Variables
{
public static String randomWord;
}
阶级^
public static String pickWord()
throws IOException
{
File words = new File("wordList.txt");
String wordToArray;
String[] arrWord = new String[3863];
Scanner sc = new Scanner(words);
Random rWord = new Random();
int i = 0;
do
{
sc.nextLine();
wordToArray = sc.next();
arrWord[i] = wordToArray;
i++;
}while(sc.hasNext());
Arrays.toString(arrWord);
int idx = rWord.nextInt(arrWord.length);
Variables.randomWord = (arrWord[idx]);
System.out.println(Variables.randomWord);
return Variables.randomWord;
}
在这里,我更改值,将.txt文档中的单词设置到数组中,然后从数组中随机获取一个单词。第一类
String selectedWord = Variables.randomWord;
System.out.println("Got your word, get ready!" + selectedWord);
return selectedWord;
在我需要新值类2的地方,您可以这样做。创建一个类,添加公共静态变量并修改变量Variables.randomWord。但更明智的做法是将该类设为最终类,将静态变量设为私有,并使用静态函数获取和设置该变量(封装)一个工作示例(假定已正确设置了wordList.txt文件路径) Variables.java: 包com.avk.randomword
public final class Variables {
private static String randomWord;
public static String getRandomWord(){
return randomWord;
}
public static void setRandomWord( String randomWord ){
Variables.randomWord = randomWord;
}
}
Class1.java:
package com.avk.randomword;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Class1 {
public String pickWord(){
String wordToArray;
String randomWord;
ArrayList<String> arrWord = new ArrayList<String>();
Random rWord = new Random();
try{
File words = new File("wordList.txt");
Scanner sc = new Scanner(words);
while( sc.hasNext() ) {
wordToArray = sc.next().trim();
if( wordToArray.length() > 0 ){
arrWord.add( wordToArray );
}
}
}catch( IOException e){
e.printStackTrace();
}
if( arrWord.size() <= 0 ){
System.out.println( "No words found in array arrWord" );
return null;
}
int idx = rWord.nextInt( arrWord.size() -1 );
randomWord = arrWord.get(idx);
Variables.setRandomWord( randomWord );
System.out.println( "Class1 set Variables.randomWord to: " + Variables.getRandomWord());
return Variables.getRandomWord();
}
}
Main.java:
package com.avk.randomword;
public class Main {
public static void main(String[] args) {
Class1 myClass1 = new Class1();
myClass1.pickWord();
Class2 myClass2 = new Class2();
}
}
如果wordList.txt如下所示:
apple
pear
orange
banana
可能的正确输出为:
Class1 set Variables.randomWord to: pear
This is Class2 getting the randomWord from final class Variables: pear
希望这会有帮助。我把它修好了
需要添加到类1中
Variables.randomWord = Variables.randomWord = (arrWord[idx]);
我知道我能,但怎么办?如何告诉类更新变量?让类调用您创建的名为Variables.setRandomWord()的静态函数。因为它是静态的,所以不需要实例化新变量()。它在任何地方都可用。但是在Variables.setRandomWord()中,如何获取更新的值?通过添加一个静态函数,如getRandomWord()返回字符串。。。我有一种轻微的感觉,你在嘲弄我,我们在兜圈子。我在问我会用什么代码来更新变量。我如何告诉这个变量它需要更新。新变量.randomWord=Class.settingRandomWord();谢谢你的回答,但这似乎不是我想要的,很好。我会想办法的。
Variables.randomWord = Variables.randomWord = (arrWord[idx]);