gpt4 book ai didi

java - 如何使用for循环在java中的数组中存储多个电影标题

转载 作者:行者123 更新时间:2023-11-30 08:54:13 24 4
gpt4 key购买 nike

我目前正在为学校做一个项目,在这个项目中我必须提示多个电影标题,以及每部电影的副本数量并将它们存储在一个数组中。但是,似乎每次我要求一个新标题时,它都会覆盖上一个标题。我目前有两个文件 rentalplace.javavideo.java(两者的内容都包含在底部)。目前我提示只输入 3 部电影。它看起来像这样:

Title of Video?
lion king
Number of Copies?
3
Title of Video?
finding nemo
Number of Copies?
5
Title of Video?
Monsters inc.
Number of Copies?
1

在最后一次迭代中输入这些答案时会发生什么(我输入 "Monsters inc." 的地方)将打印数组中的所有空格。像这样:

Title ----------#copies-------#Available

Monsters inc-----1---------------1

Monsters inc-----1---------------1

Monsters inc-----1---------------1

我需要找到一种方法来执行此操作而不覆盖数组中的先前值,以便第一个位置 [0] 将显示为 “Lion king”第二个位置 [1] 将显示为 “海底总动员”

我的代码:rentalplace.java

package videolibrary;

import java.util.Scanner;

public class rentalplace {
public static void printAll(int current, video[] varray) {
System.out.println("Title" + "\t" + "Number of" + "\t" + "Number Available");
for (int i = 0; i <= varray.length; i++) {
varray[i].print();
}
}

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int current = 0, max = 10;
video[] varray = new video[max];
video v = new video();
for (int j = 0; j < 3; j++) {
v.addVideo();
varray[j] = v;
current++;
}
printAll(current, varray);
}
}

video.java:

package videolibrary;

import java.util.Scanner;

public class video {
private String title;
private int NumberOf;
private int NumAvailable;
private Scanner keyboard = new Scanner(System.in);

public void addVideo() {
System.out.println("Title of video?");
title = keyboard.nextLine();
System.out.println("Number of copies?");
NumberOf = keyboard.nextInt();
String nothing = keyboard.nextLine();
NumAvailable = NumberOf;
}

public void addNum(int NumToAdd) {
NumberOf = NumberOf + NumToAdd;
NumAvailable = NumAvailable + NumToAdd;
}

public void removeNum(int NumToRem) {
NumberOf = NumberOf - NumToRem;
NumAvailable = NumAvailable - NumToRem;
}

public void checkOut() {
if (NumAvailable > 0)
NumAvailable--;
else
System.out.println("Sorry " + title + " is not available at this time.");
}

public void print() {
System.out.println(title + " \t " + NumberOf + " \t " + NumAvailable);

}
}

最佳答案

video v = new video(); 应该在循环内。否则,您将多次向数组添加相同的 video 实例。

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int current=0, max = 10;
video[] varray = new video[max];
for(int j = 0; j < 3; j++) {
video v = new video();
v.addVideo();
varray[j]=v;
current++;
}
printAll(current, varray);
}

关于java - 如何使用for循环在java中的数组中存储多个电影标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com