【问题标题】:Collecting characters form a string and converting them to integers收集字符形成一个字符串并将它们转换为整数
【发布时间】:2015-02-08 20:31:55
【问题描述】:
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner scan = new Scanner(System.in);
    int rounds, antonia = 100, david = 100;
    int rolla, rolld;
    String score;
    String[] scorenospace;
    System.out.println("How many rounds would you like to play? (1-15)");
    rounds = scan.nextInt();
    while (rounds > 0) {
        score = scan.nextLine();
        scorenospace = score.split(" ");
        rolla = Integer.parseInt((scorenospace[0]));
        rolld = Integer.parseInt((scorenospace[1]));
        if (rolla > rolld) {
            david = david - rolla;
        } else if (rolla < rolld) {
            antonia = antonia - rolld;
        } else if (rolla == rolld) {
        }
        rounds--;
    }
    System.out.println(antonia + david);
}

用户将输入两个用空格分隔的数字。我想单独收集和比较作为字符串输入的 2 个数字。我该怎么做呢?

我的代码抛出了越界异常。我很困惑。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner scan = new Scanner(System.in);
    int rounds, antonia = 100, david = 100;
    int rolla, rolld=0;
    String score;
    System.out.println("How many rounds would you like to play? (1-15)");
    rounds = scan.nextInt();
    while (rounds > 0) {
        score = scan.nextLine();
        rolla = score.charAt(0);
        rolld = score.charAt(2);
        if (rolla > rolld) {
            david = david - rolla;
        } else if (rolla < rolld) {
            antonia = antonia - rolld;
        } else if (rolla == rolld) {
        }
        rounds--;
    }
    System.out.println(antonia + david);
}

我也尝试了 chatAt 方法,但似乎无法让代码工作。任何帮助将不胜感激。我为平庸的代码质量道歉。我是编程新手,我正在努力自己学习。非常感谢大家的帮助, 干杯:)

【问题讨论】:

  • 通过什么输入会引发 IOOB?法律意见?
  • 您提供的输入是什么?
  • 使用 char 你实际上会得到 char,所以你需要做类似rolla = (int)score.charAt(1) - 48;
  • Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0 at java.lang.String.charAt(String.java:646) at doubledicesimple.main(doubledicesimple.java:15) 这是它抛出的错误,程序运行不够远让我输入任何分数,它在我输入多少轮后立即抛出异常玩
  • 它不会向我抛出任何错误吗?您尝试的输入是什么?按什么顺序输入?

标签: java arrays string int compare


【解决方案1】:

如果您希望输入有点像这样,只是猜测:

3 12 17 // where 3 is rounds and 12 and 17 are values
23 45 // 23 and 45 again as values
12 36 // 12 and 36 again as values

然后您可以将代码更改为:

rounds = Integer.parseInt(scan.nextLine());
while (rounds > 0) {
    score = scan.nextLine();
    rolla = Integer.parseInt(score.split(" ")[0]);
    rolld = Integer.parseInt(score.split(" ")[1]);
    .
    .
    .
}

添加另一件事: score.charAt(0) 将为您提供等效的 ascii。

【讨论】:

  • 我需要这样的输入:2 //number of rounds 3 4 //values 4 6//values again
  • 但您的第一个输入似乎仍然是轮数和值,因为实际程序要求第一个输入只是轮数,然后以下输入是实际值
  • 试试你提供的输入... 2 //轮数 3 4 //values 4 6//values again 答案将是 190。rounds = Integer.parseInt(scan.nextLine());询问您将在哪里输入 2 并按回车键。在控制台下一行开始,您可以开始输入您的值
  • 我的编译器继续给我以下错误:Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:592) at java.lang.Integer.parseInt(Integer.java:615) at doubledice.main(doubledice.java:15)
  • 当程序询问我想玩多少轮时,我输入数字 2,然后程序立即抛出错误
猜你喜欢
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2021-10-28
  • 1970-01-01
相关资源
最近更新 更多