【问题标题】:String.valueOf(int value) gives error [closed]String.valueOf(int value) 给出错误 [关闭]
【发布时间】:2012-08-20 06:47:32
【问题描述】:

我正在尝试将int 转换为String,以便我可以将String 值放入SQLite 游标中。我尝试了多种语法和方法,但似乎都不适合我。

在尝试转换任何Int 类型以及boolean 时,MangaItemDB() 中发生错误。

我浏览了几篇文章like this one,但没有一篇适合我。

这是我的代码:

public class MangaItem {

private int _id;
private String mangaName;
private String mangaLink;
private static String mangaAlpha;
private static int mangaCount;
private static int alphaCount;

private boolean mangaComplete = false;



public MangaItem MangaItemDB(int id, String mangaName, String mangaLink, String mangaAlpha, String mangaCount, String alphaCount, String mangaComplete) {
    MangaItem MangaItemDB = new MangaItem();
    MangaItemDB._id = id;
    MangaItemDB.mangaName = mangaName;
    MangaItemDB.mangaLink = mangaLink;
    MangaItemDB.mangaAlpha = mangaAlpha;
    MangaItemDB.mangaCount = String.valueOf(int mangaCount);
    MangaItemDB.alphaCount = Integer.toString(getAlphaCount());
    MangaItemDB.mangaComplete = String.valueOf(getMangaComplete());
    return MangaItemDB;


}

public void incrementMangaCount() {
    mangaCount++;
}

public int getMangaCount() {
    return mangaCount;
}

public void incrementAlphaCount() {
    alphaCount++;
}

public int getAlphaCount() {
    return alphaCount;
}

public boolean setMangaComplete(boolean mangaComplete) {
    return true;
}

public boolean getMangaComplete() {
    return mangaComplete;
}

/**
 * @return the mangaName
 */
public String getMangaName() {
    return mangaName;
}

/**
 * @param mangaName the mangaName to set
 */
public void setMangaName(String mangaName) {
    this.mangaName = mangaName;
}

/**
 * @return the mangaLink
 */
public String getMangaLink() {
    return mangaLink;
}

/**
 * @param mangaLink the mangaLink to set
 */
public void setMangaLink(String mangaLink) {
    this.mangaLink = mangaLink;
}

/**
 * @return the mangaAlpha
 */
public String getMangaAlpha() {
    return mangaAlpha;
}

/**
 * @param mangaAlpha the mangaAlpha to set
 */
public void setMangaAlpha(String mangaAlpha) {
    this.mangaAlpha = mangaAlpha;
}

/**
 * @return the _id
 */
public int get_id() {
    return _id;
}

/**
 * @param _id the _id to set
 */
public void set_id(int _id) {
    this._id = _id;
}

}

线条:

    MangaItemDB.mangaCount = String.valueOf(mangaCount);
    MangaItemDB.alphaCount = Integer.toString(getAlphaCount());
    MangaItemDB.mangaComplete = String.valueOf(getMangaComplete());

全部给出“类型不匹配:无法从 String 转换为 Int”

【问题讨论】:

  • 确保MangaItemDB.mangaCount的类型确实是String等

标签: java string type-conversion


【解决方案1】:
MangaItemDB.mangaCount = String.valueOf(int mangaCount);

该代码甚至不应该编译。调用方法时不应该传递参数类型,而是调用方法时只需传递参数:

MangaItemDB.mangaCount = String.valueOf(mangaCount);

如果您有所有编译错误,请发布它们,这样我们就不必猜测它们了。

编辑
你说:

MangaItemDB.mangaCount = String.valueOf(mangaCount);
MangaItemDB.alphaCount = Integer.toString(getAlphaCount());
MangaItemDB.mangaComplete = String.valueOf(getMangaComplete());

全部给出“类型不匹配:无法从 String 转换为 Int”

这表明您正在尝试将字符串分配给 int 变量,因此似乎不需要将结果转换为字符串。为什么不简单地将整数分配给整数,将布尔值分配给布尔值?

MangaItemDB.mangaCount = mangaCount;
MangaItemDB.alphaCount = getAlphaCount();
MangaItemDB.mangaComplete = getMangaComplete();

另外,你为什么使用静态变量?这样做的理由是什么?有时您会想要使用静态变量,但大多数情况下您的变量应该是实例变量。

【讨论】:

  • MangaItemDB.mangaCount = String.valueOf(mangaCount); 对我不起作用。我尝试了很多变体发布的只是当前的
  • @Davidrd91:“对我不起作用”并没有告诉我们足够的信息来帮助您。它怎么行不通?你得到一个编译错误?运行时异常?行为不端?这些细节很重要,所以请告诉我们。
  • 抱歉不清楚。问题已被编辑。
  • @David:再次,请参阅我的答案的编辑。
  • 变量 mangaCountalphaCount 是 XML 中元素的计数器,因此是类型 Int。我现在明白为什么 Int 值不会转换,因为我将它们保存在类型 Int 变量中。
【解决方案2】:
MangaItem mangaItemDB = new MangaItem();
MangaItemDB._id = id;
MangaItemDB.mangaName = mangaName;
MangaItemDB.mangaLink = mangaLink;
MangaItemDB.mangaAlpha = mangaAlpha;
MangaItemDB.mangaCount = String.valueOf(int mangaCount);  //change to mangaItemDB .setMangaCount(String.valueOf(mangaCount));
MangaItemDB.alphaCount = Integer.toString(getAlphaCount());
MangaItemDB.mangaComplete = String.valueOf(getMangaComplete());

见上面的代码,非常糟糕的做法。您应该使用 getter 和 setter 方法,例如:

mangaItemDB.setMangaCount(String.valueOf(mangaCount)); 

【讨论】:

  • 刚刚尝试过mangaItemDB.setMangaCount(String.valueOf(mangaCount));,但这会返回错误:“setMangaCount(String) is undefined” 我想如果没有找到其他解决方案,我可以添加此方法。
  • 不仅如此,最重要的是,将它们设为私有,提供getter 和setter 方法。除非必要,否则不要将字段设为静态。
【解决方案3】:

因为 MangaCount 和 Alpha 计数是静态的,所以您不想在非静态上下文中设置它们 - 本质上您什么都不做。如果您希望 MangaItem 保留这些值,请制作 MangaCount 和 AlphaCount 的非静态版本。

MangaComplete() 返回一个布尔值,因此您不需要解析它。

静态变量和方法是您只需要一种用于类的变量和方法,而非静态变量和方法是特定于类的 - 它们只能从对象本身使用。似乎设置和获取 MangaCount+AlphaCount 应该是静态的。

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多