我有两节课。我想使用第二个类(类问题)中第一个类的english
和french
。请帮我修复该代码,因为它显示错误。
代码块:
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");
}
}
答案 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;
}
}