Java 将值从构造函数传递给方法
我必须传递我的Java 将值从构造函数传递给方法,java,methods,constructor,Java,Methods,Constructor,我必须传递我的吉他构造函数中的值,然后将它们传递给generateSong方法。有一个陷阱。generate song方法无法接收参数,因为这些值位于同一个类中,因此它们应该能够接收构造函数中的值 当我尝试在该方法中实现值时,无法访问这些值。我怎样才能解决这个问题 public Guitar(int chord, int numOfStrings) { //pass these values to the generateSong method System.o
吉他
构造函数中的值,然后将它们传递给generateSong
方法。有一个陷阱。generate song方法无法接收参数,因为这些值位于同一个类中,因此它们应该能够接收构造函数中的值
当我尝试在该方法中实现值时,无法访问这些值。我怎样才能解决这个问题
public Guitar(int chord, int numOfStrings) {
//pass these values to the generateSong method
System.out.println("Guitar () generated a guitar with: " + numOfStrings + "." + "Song length is " +chord);
// declare the array for which the song is stored
// store the values of the last row i (highest index of the array)
double[] max = null;
Guitar.generateSong();
// start the generate song method
public static void generateSong () {
double [] [] song = new double [numOfStrings] [chord];
double[] max;
int findmax =0;
int sum =0;
for (int i =0; i<song.length; i++) {
for (int j =0; j<song.length; j++ ) {
sum = (int) (sum +song[i][j]);
}
for (int e=0; e<song.length; e++) {
if (song[e]!=song[findmax] ) {
max[e] =e;
}
for(int k=0; k<song.length; k++) {
for (int l=0; k<song[k].length; k++)
// assign note values to the array
song [k] [l] = 27.5 + (Math.random()* 4186);
// print out the proper value
System.out.printf("8.2%f", song);
for( int m=0; m<max.length; m++)
max[m]= 1 +( Math.random() *3);
System.out.printf("8.2%f", max);
}
}
}
}
因此,存在两个语法错误和一个对需求的误解。让我们从误解开始 generate song方法无法接收参数,因为这些值位于同一个类中,因此它们应该能够接收构造函数中的值 这只能通过字段实现。您需要设置构造函数,以便为这些值创建字段,然后可以在该类中的任何其他地方使用这些字段 在这个场景中
public class Guitar {
private int chord;
private int numberOfStrings;
public Guitar(final int chord, final int numberOfStrings) {
this.chord = chord;
this.numberOfStrings = numberOfStrings;
}
}
其次,不能在其他方法中定义方法。将generateSong
方法的定义移出构造函数
第三,不要使generateSong
方法静态化创建要使用的实例,并在main
中使用该实例来执行所需的行为
// in main()
Guitar guitar = new Guitar(4, 10);
guitar.generateSong();
作为附录,您需要确保解析从命令行获得的整数,因为这些值总是以
String
的形式出现。我将此作为练习留给读者。因此,有两个语法错误和一个对需求的误解。让我们从误解开始
generate song方法无法接收参数,因为这些值位于同一个类中,因此它们应该能够接收构造函数中的值
这只能通过字段实现。您需要设置构造函数,以便为这些值创建字段,然后可以在该类中的任何其他地方使用这些字段
在这个场景中
public class Guitar {
private int chord;
private int numberOfStrings;
public Guitar(final int chord, final int numberOfStrings) {
this.chord = chord;
this.numberOfStrings = numberOfStrings;
}
}
其次,不能在其他方法中定义方法。将generateSong
方法的定义移出构造函数
第三,不要使generateSong
方法静态化创建要使用的实例,并在main
中使用该实例来执行所需的行为
// in main()
Guitar guitar = new Guitar(4, 10);
guitar.generateSong();
作为附录,您需要确保解析从命令行获得的整数,因为这些值总是以
String
的形式出现。我将此作为练习留给读者。其次,您不能在其他方法中定义方法。
不同意。你可以。匿名,lambda也是函数。@ssc:lambda是函数(或者更好,是匿名类上非常薄的一层)。这不是一种方法,我的错。我经常交替使用这些术语,但我理解并理解了你的意思。谢谢。其次,你不能在其他方法中定义方法。
不同意。你可以。匿名,lambda也是函数。@ssc:lambda是函数(或者更好,是匿名类上非常薄的一层)。这不是一种方法,我的错。我经常交替使用这些术语,但我理解并理解了你的意思。谢谢