使用来自另一个类的变量

我有两节课。 我想在第二堂课(课堂题目)中使用第一堂课的englishfrench 。 请帮我修复该代码,因为它显示了一个错误。

代码块:

 package josephtraduire; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; public class FileParser implements IParser{ @Override public void parseFile () throws IOException{ String french=""; String english=""; try( BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\User\\Desktop\\text.txt"))){ String line; while ((line = br.readLine())!=null){ String[] pair = line.split(";"); french=(pair[0]); english=(pair[1]); } } } } 

 package josephtraduire; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.util.Date; import java.util.Scanner; public class Question extends FileParser { String mot ; String reponse ; String name; int nb; int nbquest ; String traduction; Question (String name , int nb){ this.name=name; this.nb=nb; } Question() throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); { System.out.println("Entrer votre nom "); String nom = in.readLine(); name=nom; } do { System.out.println("Rentrez le nombre de question : ( max 20 )"); Scanner nombrequest = new Scanner(System.in); nbquest = nombrequest.nextInt(); nb=nbquest; } while ( nbquest>20 ||nbquest<=0); } public void Play () throws IOException{ int i=0; boolean bool=true; int score=0; String continuer; Date maDate = new Date(); String a = maDate.toString() ; while (i<nbquest && bool) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); System.out.println("donner la traduction de "+french); String reponseee = in.readLine(); traduction=reponseee; if(bool=true ){ if(traduction.equals(english)){ score++; System.out.println("Bravo! Bonne reponse"); }else{ System.out.println("Mauvaise reponse"); } } 

我将忽略源代码并以一般术语回答这个问题。 您可以直接或使用getter访问对象的实例变量。 我将在这个例子中使用getter。

实例变量 – 只要类存活就会生存,它们在类的主体内声明但不在任何方法或构造函数中声明

方法变量 – 只要方法不再生效,通常做一些工作然后就不见了,它们在方法/构造函数中声明

 public class ClassThatWantsFields { public String combineFields(ClassWithFields classWithFields){ //if I have access to the object classWithFields then I have access to its //public methods (and possibly also protected and default access; but this is outside the scope of this question) return classWithFields.getEnglish()+classWithFields.getFrench(); } public static void main(String[] args){ ClassWithFields classWithFields=new ClassWithFields(); ClassThatWantsFields classThatWantsFields=new ClassThatWantsFields(); System.out.println(classThatWantsFields.combineFields(classWithFields)); } } 

 public class ClassWithFields { private String English; //these are instance variables, they live for as long as the object lives private String French; private String preservedMayFly; public ClassWithFields(){ English="A language called English"; French="A language called French"; //mayfly is a method variable, it will be gone once the constructor //exits, anything you want to keep for the life of the object should //NOT be a method variable String mayfly="I won't live long"; //preservedMayFly is an instance variable and will live as long as //the object preservedMayFly=mayfly+"but I can be used within the method" } public String getEnglish() { return English; } public String getFrench() { return French; } }