java新手,需要一些帮助。我正在处理2个文件。一个类定义一个类及其所有方法,另一个类构造该类的一个实例。我的项目要求我们将类方法的输出写入到file.When中,我尝试将文件1导入到文件2中,但一直收到“无法解析”错误。
文件#1
public class ViolinGonzalezAP3 {
//Create Violin class
public int numberOfStrings = 4;
public char[] stringNames = {'E', 'A', 'D', 'G'};
public boolean isTuned = false;
public boolean isPlaying = false;
public int numberOfViolins = 0;
class Violin{
//Create methods for Violin class
public Violin(){
numberOfViolins++;
}
public void startPlaying() {
isPlaying = true;
System.out.println(" violin is now playing.");
}
public void stopPlaying() {
isPlaying = false;
System.out.println(" violin has stopped playing.");
}
public void tuneOn() {
isTuned = true;
System.out.println(" violin is now tuned.");
}
public void tuneOff() {
isTuned = false;
System.out.println(" violin is untuned.");
}
int getNumberOfViolins(){
return numberOfViolins;
}
int getNumberOfStrings(){
return numberOfStrings;
}
char[] notes(){
return stringNames;
}
}
} 文件#2
import java.io.*;
import java.util.Arrays;
public class ViolinDriverGonzalezAP3 {
public static void main(String[] args) throws Exception{
//Declare file and class names
java.io.File file = new java.io.File("Java violinOutput.txt");
PrintWriter output = new PrintWriter(file);
Violin[] violinAmount = new Violin[10];
//Create 10 violin objects
for (int i = 0; i < violinAmount.length; i++){
violinAmount[i] = new Violin();
System.out.println(Violin.getNumberOfViolins() + " Violin");
output.println(Violin.getNumberOfViolins() + " object:");
violinAmount[i].tuneOff();
output.println("The violin is now tunning...");
violinAmount[i].tuneOn();
output.println("The violin is now playing...");
violinAmount[i].startPlaying();
output.println("String numbers is " + Violin.getNumberOfStrings() + " with String names are " + Arrays.toString(Violin.notes()));
output.println("The violin is now stopped");
violinAmount[i].stopPlaying();
}
output.close();
}
}发布于 2014-11-02 17:12:46
为了创建内部类的实例,您必须首先创建一个外部类的实例。检查此代码。
import java.io.*;
import java.util.Arrays;
public class ViolinDriverGonzalezAP3 {
public static void main(String[] args) throws Exception{
//Declare file and class names
java.io.File file = new java.io.File("Java violinOutput.txt");
PrintWriter output = new PrintWriter(file);
ViolinGonzalezAP3 outerClassObj = new ViolinGonzalezAP3();
ViolinGonzalezAP3.Violin[] violinAmount = new ViolinGonzalezAP3.Violin[10];
//Create 10 violin objects
for (int i = 0; i < violinAmount.length; i++){
violinAmount[i] = outerClassObj.new Violin();
System.out.println(violinAmount[i].getNumberOfViolins() + " Violin");
output.println(violinAmount[i].getNumberOfViolins() + " object:");
violinAmount[i].tuneOff();
output.println("The violin is now tunning...");
violinAmount[i].tuneOn();
output.println("The violin is now playing...");
violinAmount[i].startPlaying();
output.println("String numbers is " + violinAmount[i].getNumberOfStrings() + " with String names are " + Arrays.toString(violinAmount[i].notes()));
output.println("The violin is now stopped");
violinAmount[i].stopPlaying();
}
output.close();
}
}发布于 2014-11-02 17:14:40
尝试修改第二个类:
import java.io.*;
import java.util.Arrays;
public class ViolinDriverGonzalezAP3 {
public static void main(String[] args) throws Exception{
//Declare file and class names
java.io.File file = new java.io.File("Java violinOutput.txt");
PrintWriter output = new PrintWriter(file);
ViolinGonzalezAP3 vg = new ViolinGonzalezAP3();
ViolinGonzalezAP3.Violin[] violinAmount = new ViolinGonzalezAP3.Violin[10];
//Create 10 violin objects
for (int i = 0; i < violinAmount.length; i++){
violinAmount[i] = vg.new Violin();
System.out.println(violinAmount[i].getNumberOfViolins() + " Violin");
output.println(violinAmount[i].getNumberOfViolins() + " object:");
violinAmount[i].tuneOff();
output.println("The violin is now tunning...");
violinAmount[i].tuneOn();
output.println("The violin is now playing...");
violinAmount[i].startPlaying();
output.println("String numbers is " + violinAmount[i].getNumberOfStrings() + " with String names are " + Arrays.toString(violinAmount[i].notes()));
output.println("The violin is now stopped");
violinAmount[i].stopPlaying();
}
output.close();
}
}//end method main发布于 2014-11-02 17:17:34
代码为Violin类返回cannot resolve错误的原因是因为该类在ViolinGonzalezAP3中被定义为内部类。
虽然仍然可以在代码的其他部分实例化和引用内部类,但这样做应该有很好的理由。在您的特定情况下,我建议避免这样做,只需按如下方式公开小提琴类:
文件: Violin.java
class Violin{
private static int numberOfViolins = 0;
private static final int numberOfStrings = 4;
private static final char[] stringNames = {'E', 'A', 'D', 'G'};
private boolean isTuned = false;
private boolean isPlaying = false;
//Create methods for Violin class
public Violin(){
numberOfViolins++;
}
public void startPlaying() {
isPlaying = true;
System.out.println(" violin is now playing.");
}
public void stopPlaying() {
isPlaying = false;
System.out.println(" violin has stopped playing.");
}
public void tuneOn() {
isTuned = true;
System.out.println(" violin is now tuned.");
}
public void tuneOff() {
isTuned = false;
System.out.println(" violin is untuned.");
}
public static int getNumberOfViolins(){
return numberOfViolins;
}
public static int getNumberOfStrings(){
return numberOfStrings;
}
public static char[] notes(){
return stringNames;
}
}请详细查看这个类,因为您将在此处找到对原始代码的更多更改:
methods
numberOfStrings和modified
numberOfViolins参数被定义为静态,因为它们是常量,不会是静态的,从而保持创建的小提琴的全局数量(注意:有更好的方法来解决这个任务,即可以将保持实例数量的责任移到ViolinDriverGonzalezAP3上,但现在就可以了)。和private已经定义为静态的,以保持创建的小提琴的全局数量。getNumberOfViolins、getNumberOfStrings和notes已定义为public static,因此可以通过Violin.<methodName>将它们作为类方法进行访问
https://stackoverflow.com/questions/26697536
复制相似问题