したがって、私のメソッドprintDetails()
をCustomerTestクラスのCustomer
クラスから呼び出しようとしています。変数の値は記録されていませんし、私はそれを実行すると、配列の名前とエラーのnullを取得します。私は変数の値を記録して印刷する方法を知りません。独自の変数を持つ別のクラスからメソッドを呼び出す
public class Customer {
public String name;
public int[] itemCost;
public void printDetails(){
System.out.print("Great, here is your customer's purchase details: \n");
System.out.print("Name:"+name);
System.out.println();
for (int i = 0; i < itemCost.length; i ++){
System.out.print("Item Cost #" + (i+1) + " : ");
System.out.print(itemCost[i] + "\n");
}
int sum = IntStream.of(itemCost).sum();
System.out.println("Total:" + sum);
}
}
public class CustomerTest {
public static void main(String[] args){
Customer main = new Customer();
Scanner scan = new Scanner(System.in);
System.out.print("Do you want to create a customer? \n");
String s = scan.next();
if(s.equals("y") || s.equals("yes")){
System.out.print("Ok, what's his/her name? \n");
String name = scan.next();
System.out.print("How many items is the customer buying? \n");
int n = scan.nextInt();
int itemCost[] = new int[n];
for (int i = 0; i < itemCost.length; i ++){
System.out.print("Enter a value for item #"+(i+1));
System.out.printf("%n");
int j = scan.nextInt();
itemCost[i] = j;
}
main.printDetails();
}
}
}
実際には、インスタンスの変数に物事を割り当てる必要があります。 'main.name = scan.next();'の代わりに 'String name = scan.next()'を使います。 –