使用另一个类的变量

时间:2014-01-07 11:33:40

标签: java class variables

我有两节课。我想使用第二个类(类问题)中第一个类的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");
            }
        }

1 个答案:

答案 0 :(得分:1)

我将忽略源代码并以一般术语回答这个问题。您可以直接或使用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;
    }



}