gpt4 book ai didi

java - Item 类中的构造函数 Item 不能应用于给定类型

转载 作者:行者123 更新时间:2023-12-01 09:26:45 26 4
gpt4 key购买 nike

“类 Item 中的构造函数 Item 不能应用于给定类型;
必需:java.lang.String,java.land.String,int,int,java.lang.String;成立;没有争论;原因:实际和正式的争论列表长度不同”

这是我的完整错误消息,我正在尝试获取一种方法,在调用时从数组列表中为我提供随机剑名称。

为了简单起见,我将类代码粘贴到 2 个不同的粘贴箱中:
Class Swords
Class Item
编辑:代码...

    import java.util.Random;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Write a description of class Swords here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Swords extends Item
{
// instance variables - replace the example below with your own
private int dmg;
ArrayList<String> swordNames = new ArrayList();
HashMap<String,String> swordDesc = new HashMap<String,String>();

/**
* Constructor for objects of class Swords
*/
public Swords()
{
generateSwordName();
super(getRandomSword(), "asd", 40, 40, "Item");
dmg = generateRandom(2, 50);
}

public int generateRandom(int Start, int End)
{
int START = Start;
int END = End;
Random random = new Random();
long range = (long)END - (long)START +1;
long fraction = (long)(range * random.nextDouble());
int randomNumber = (int)(fraction + START);
return randomNumber;
}

public void generateSwordName()
{
swordNames.add("Blade of Slimer");
swordDesc.put("Blade of Slimer", new String("Blade of Slimer is a sword forged from the waste of Slimer, surprisingly durable."));
swordNames.add("Thorny Farris");
swordDesc.put("Thorny Farris", new String("A rose thorn was accidently dropped into a bottle of Farris, and a majestic sword emerged from the bottle"));
swordNames.add("The Sword of Leah");
swordDesc.put("The Sword of Leah", new String(" A sword carried by the Leah family for generations, later given the ability to cut through magic."));
swordNames.add("Grayswandir");
swordDesc.put("Grayswandir", new String("A sword used by Corwin of Amber. Grayswandir is associated with the moon and the night."));
swordNames.add("Werewindle");
swordDesc.put("Werewindle", new String("A sword used by Brand of Amber. Werewindle is associated with the sun and day."));
swordNames.add("Dull Sword");
swordDesc.put("Dull Sword", new String("A dull sword"));

}

public String getRandomSword()
{
int swordSize = swordNames.size()-1;
String randomSwords = swordNames.get(generateRandom(0,swordSize));
return randomSwords;
}


/**
* Skriver ut informasjon om itemet.
*/
public void print()
{
int minDmg = dmg - 2;
int maxDmg = dmg + 2;
System.out.println("########################");
System.out.println("# Name of item: " + super.getName());
System.out.println("# Item description: " + super.getDesc());
System.out.println("# Sword damage: " + minDmg + "-" + maxDmg);
System.out.println("# Item value: " + super.getValue() + " coins");
System.out.println("# Item weight: " + super.getWeight() + "kg");
System.out.println("########################");
}
}

项目类别:

import java.util.HashSet;
/**
* Write a description of class Item here.
*
* @author Thomas andré G. Petersson
* @version 29.09.2016 | v0.1
*
* Item

*/
public class Item
{

private String itemName;
private String desc;
private int value;
private int weight;
private String action;

public Item(String itemName, String desc, int value, int weight, String action)
{
this.itemName = itemName;
this.desc = desc;
this.value = value;
this.weight = weight;
this.action = action;
}
// Getters for bruk av arvings klasser #############################
public String getName()
{
return itemName;
}

public String getDesc()
{
return desc;
}

public int getValue()
{
return value;
}

public int getWeight()
{
return weight;
}

public String getAction()
{
return action;
}
//##################################################################


/**
* Skriver ut informasjon om itemet.
*/
public void print()
{
System.out.println("########################");
System.out.println("# Name of item: " + itemName);
System.out.println("# Item description: " + desc);
System.out.println("# Item value: " + value + " coins");
System.out.println("# Item weight: " + weight + "kg");
System.out.println("########################");
}
}

最佳答案

关于不同剑名称的代码对于特定剑实例来说没有什么特殊之处。因此,您可以将剑的名称和描述移至静态字段,并从静态初始化程序初始化它们。然后在构造函数中您已准备好数据:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;

/**
* Write a description of class Swords here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Swords extends Item {
private static ArrayList<String> swordNames = new ArrayList();
private static HashMap<String, String> swordDesc = new HashMap<String, String>();

static {
generateSwordName();
}

// instance variables - replace the example below with your own
private int dmg;

/**
* Constructor for objects of class Swords
*/
public Swords() {
super(getRandomSword(), "asd", 40, 40, "Item");
dmg = generateRandom(2, 50);
}

public static String getRandomSword() {
int swordSize = swordNames.size() - 1;
String randomSwords = swordNames.get(generateRandom(0, swordSize));
return randomSwords;
}

public static int generateRandom(int Start, int End) {
int START = Start;
int END = End;
Random random = new Random();
long range = (long) END - (long) START + 1;
long fraction = (long) (range * random.nextDouble());
int randomNumber = (int) (fraction + START);
return randomNumber;
}

public static void generateSwordName() {
swordNames.add("Blade of Slimer");
swordDesc.put("Blade of Slimer",
new String("Blade of Slimer is a sword forged from the waste of Slimer, surprisingly durable."));
swordNames.add("Thorny Farris");
swordDesc.put("Thorny Farris", new String(
"A rose thorn was accidently dropped into a bottle of Farris, and a majestic sword emerged from the bottle"));
swordNames.add("The Sword of Leah");
swordDesc.put("The Sword of Leah", new String(
" A sword carried by the Leah family for generations, later given the ability to cut through magic."));
swordNames.add("Grayswandir");
swordDesc.put("Grayswandir",
new String("A sword used by Corwin of Amber. Grayswandir is associated with the moon and the night."));
swordNames.add("Werewindle");
swordDesc.put("Werewindle",
new String("A sword used by Brand of Amber. Werewindle is associated with the sun and day."));
swordNames.add("Dull Sword");
swordDesc.put("Dull Sword", new String("A dull sword"));

}

/**
* Skriver ut informasjon om itemet.
*/
public void print() {
int minDmg = dmg - 2;
int maxDmg = dmg + 2;
System.out.println("########################");
System.out.println("# Name of item: " + super.getName());
System.out.println("# Item description: " + super.getDesc());
System.out.println("# Sword damage: " + minDmg + "-" + maxDmg);
System.out.println("# Item value: " + super.getValue() + " coins");
System.out.println("# Item weight: " + super.getWeight() + "kg");
System.out.println("########################");
}
}

编辑:

更改此行:

private static ArrayList<String> swordNames = new ArrayList();

private static ArrayList<String> swordNames = new ArrayList<>();

摆脱未经检查的编译器警告。

关于java - Item 类中的构造函数 Item 不能应用于给定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39772128/

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