Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图修改游戏,使程序保留一个未接受答案的列表,并在最后打印出来。(爪哇)_Java_Arraylist - Fatal编程技术网

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");

   }
}