Java 试图修改游戏,使程序保留一个未接受答案的列表,并在最后打印出来。(爪哇)
我正在尝试编写一个野餐游戏程序,该程序保存所有被拒绝项目的列表(但每个项目只出现一次|如果用户输入一个项目两次,并且两次都被拒绝,那么它应该只在被拒绝项目列表中出现一次)。在游戏结束时,打印出所有被拒绝的项目和用户答案被拒绝的次数。我应该使用数组列表。我该怎么办?这是我到目前为止所拥有的Java 试图修改游戏,使程序保留一个未接受答案的列表,并在最后打印出来。(爪哇),java,arraylist,Java,Arraylist,我正在尝试编写一个野餐游戏程序,该程序保存所有被拒绝项目的列表(但每个项目只出现一次|如果用户输入一个项目两次,并且两次都被拒绝,那么它应该只在被拒绝项目列表中出现一次)。在游戏结束时,打印出所有被拒绝的项目和用户答案被拒绝的次数。我应该使用数组列表。我该怎么办?这是我到目前为止所拥有的 import java.util.*; public class PlayPicnic { public static void main(String[] args) {
import java.util.*;
public class PlayPicnic
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
Picnic picnic = new Picnic();
while (picnic.numberOfItems() < 5)
{
System.out.print("What do you want to bring on the picnic? ");
String item = scan.nextLine();
if (picnic.okayToBring(item))
{
picnic.add(item);
}
else
{
System.out.println("Sorry, you can't bring " + item);
}
}
System.out.println("\nHere's what we'll have at the picnic:");
picnic.show();
}
}
import java.util.*;
公共课野炊
{
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
野餐野餐;
while(野餐.numberOfItems()<5)
{
System.out.print(“野餐时你想带什么?”;
String item=scan.nextLine();
if(野餐、okayToBring(项目))
{
野餐。添加(项目);
}
其他的
{
System.out.println(“对不起,您不能带”+项);
}
}
System.out.println(“\n这是我们野餐时吃的:”);
野餐表演;
}
}
这是相应的野餐课
import java.util.*;
public class Picnic
{
// INSTANCE VARIABLES:
private ArrayList<String> stuffToBring; // items to bring on the picnic
// CONSTRUCTOR:
//-----------------------------------------------------
// Construct a new Picnic.
//-----------------------------------------------------
public Picnic()
{
stuffToBring = new ArrayList<String>(); // initialize list
}
//-----------------------------------------------------
// Given an item s, see if it's okay to add it to the list.
// Return true if it is, false otherwise:
//-----------------------------------------------------
public boolean okayToBring(String s)
{
// "Secret rule" -- s can't be an item already in the list:
if (stuffToBring.contains(s)) // "contains" is in the ArrayList class
{
return false;
}
else
{
return true;
}
}
//-----------------------------------------------------
// Given an item s, add it to the list (if it's okay to add it)
//-----------------------------------------------------
public void add(String s)
{
if (okayToBring(s))
{
stuffToBring.add(s);
}
}
//-----------------------------------------------------
// Print the items in the list
//-----------------------------------------------------
public void show()
{
for (int i = 0; i < stuffToBring.size(); i++)
{
String s = stuffToBring.get(i);
System.out.println(s);
}
// ALTERNATE APPROACH USING A "for next" LOOP:
// for (String s: stuffToBring)
// {
// System.out.println(s);
// }
}
//-----------------------------------------------------
// Returns the number of items in the list:
//-----------------------------------------------------
public int numberOfItems()
{
return stuffToBring.size();
}
}
import java.util.*;
公营野餐
{
//实例变量:
private ArrayList Stuff Tobring;//野餐时要带的物品
//建造商:
//-----------------------------------------------------
//建造一个新的野餐。
//-----------------------------------------------------
公众野餐
{
stuffToBring=new ArrayList();//初始化列表
}
//-----------------------------------------------------
//给定一个项目s,查看是否可以将其添加到列表中。
//如果为true,则返回true,否则返回false:
//-----------------------------------------------------
公共布尔值okayToBring(字符串s)
{
//“秘密规则”--不能是列表中已有的项:
如果(stufptobring.contains))/“contains”在ArrayList类中
{
返回false;
}
其他的
{
返回true;
}
}
//-----------------------------------------------------
//给定项目s,将其添加到列表中(如果可以添加)
//-----------------------------------------------------
公共无效添加(字符串s)
{
if(okayToBring(s))
{
填充填充。添加(s);
}
}
//-----------------------------------------------------
//打印列表中的项目
//-----------------------------------------------------
公开展览(
{
对于(int i=0;i
创建一个数组列表
ArrayList<String> rejectedItems = new ArrayList<String>();
将项目添加到被拒绝项目列表中
System.out.println("Sorry, you can't bring " + item);
rejectedItems.add(item);
如果需要使用ArrayList,此时还需要遍历列表,并确保要添加的项不存在,因为ArrayList允许重复
最后,你把它们全部打印出来
for (String item : rejectedItems)
{
System.out.println("Rejected " + item);
}
我不确定我是否理解了你的问题,但这似乎很简单:添加一个
ArrayList
,并在else
中插入项,而则插入中。然后,在野餐.show()之后,只需打印数组列表
代码如下:
Scanner scan = new Scanner(System.in);
Picnic picnic = new Picnic();
ArrayList<String> unaccepted = new ArrayList<>();
while (picnic.numberOfItems() < 5)
{
System.out.print("What do you want to bring on the picnic? ");
String item = scan.nextLine();
if (picnic.okayToBring(item))
{
picnic.add(item);
}
else
{
if(!unaccepted.contains(item)) unaccepted.add(item);
System.out.println("Sorry, you can't bring " + item);
}
}
System.out.println("\nHere's what we'll have at the picnic:");
picnic.show();
System.out.println(Arrays.toString(unaccepted.toArray()));
Scanner scan=新的扫描仪(System.in);
野餐野餐;
ArrayList unaccept=新的ArrayList();
while(野餐.numberOfItems()<5)
{
System.out.print(“野餐时你想带什么?”;
String item=scan.nextLine();
if(野餐、okayToBring(项目))
{
野餐。添加(项目);
}
其他的
{
如果(!unecepted.contains(item))unecepted.add(item);
System.out.println(“对不起,您不能带”+项);
}
}
System.out.println(“\n这是我们野餐时吃的:”);
野餐表演;
System.out.println(Arrays.toString(unaccept.toArray());
您可以使用另一个ArrayList来跟踪不接受的项目。
由于您没有将重复项添加到未接受的ArrayList中,因此还应跟踪错误答案的数量。
以下是一个非常基本的解决方案:
import java.util.ArrayList;
import java.util.Scanner;
public class PlayPicnic {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Picnic picnic = new Picnic();
ArrayList<String> unaccepted = new ArrayList<String>();
int wrongAttempts = 0;
while (picnic.numberOfItems() < 5) {
System.out.print("What do you want to bring on the picnic? ");
String item = scan.nextLine();
if (picnic.okayToBring(item)) {
picnic.add(item);
} else {
wrongAttempts++;
if (!unaccepted.contains(item)) {
unaccepted.add(item);
}
System.out.println("Sorry, you can't bring " + item);
}
}
System.out.println("\nHere's what we'll have at the picnic:");
picnic.show();
System.out.println("Unaccepted items");
for (String item : unaccepted) {
System.out.println(item);
}
System.out.println("Your answer was rejected " + wrongAttempts + " times");
}
}
import java.util.ArrayList;
导入java.util.Scanner;
公共课野炊{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
野餐野餐;
ArrayList unaccept=新的ArrayList();
int=0;
while(野餐.numberOfItems()<5){
System.out.print(“野餐时你想带什么?”;
String item=scan.nextLine();
if(野餐、okayToBring(项目)){
野餐。添加(项目);
}否则{
错误尝试++;
如果(!不接受。包含(项)){
不接受。添加(项目);
}
System.out.println(“对不起,您不能带”+项);
}
}
System.out.println(“\n这是我们野餐时吃的:”);
野餐表演;
系统输出打印项次(“不合格项”);
for(字符串项:不接受){
系统输出打印项次(项);
}
System.out.println(“您的答案被拒绝”+错误尝试次数+”次);
}
}
Set可能比ArrayList更适合被拒绝的项目,因为海报上写着“如果用户输入一个项目两次,结果被拒绝”
import java.util.ArrayList;
import java.util.Scanner;
public class PlayPicnic {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Picnic picnic = new Picnic();
ArrayList<String> unaccepted = new ArrayList<String>();
int wrongAttempts = 0;
while (picnic.numberOfItems() < 5) {
System.out.print("What do you want to bring on the picnic? ");
String item = scan.nextLine();
if (picnic.okayToBring(item)) {
picnic.add(item);
} else {
wrongAttempts++;
if (!unaccepted.contains(item)) {
unaccepted.add(item);
}
System.out.println("Sorry, you can't bring " + item);
}
}
System.out.println("\nHere's what we'll have at the picnic:");
picnic.show();
System.out.println("Unaccepted items");
for (String item : unaccepted) {
System.out.println(item);
}
System.out.println("Your answer was rejected " + wrongAttempts + " times");
}
}