【问题标题】:java program: Adding Integers from users string inputjava程序:从用户字符串输入中添加整数
【发布时间】:2014-11-03 04:03:05
【问题描述】:

对于这个程序,我将输入作为具有以下格式的字符串:名称,后跟以空格分隔的整数。系列中可以有一个或多个整数。它的输出最终是系列的名称及其总和。这是输出应该是什么的示例:

Series? seriesname 1 3 5 7 11
sum(seriesname) = 27

我的代码有问题,这行一直有问题(例外):

int number = Integer.parseInt(series.substring(start, space));

我已经搬了很多地方,但这就是我现在所拥有的:

import java.util.Scanner;

public class NamePlusAddingInts {
    public static String series;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Series? ");

        series = scan.nextLine();
        String name = series.substring(0, series.indexOf(' '));

        System.out.print("Sum(" + name + ") = " + number);
    }
    public static int adding() {
        int space = series.indexOf(' ');

        while (space != -1) {
            int start = space + 1;
            int number = Integer.parseInt(series.substring(start, space));

            number = number + number;
            space++;
        }
        return number;
    }
}

【问题讨论】:

  • I am having problems with my code, It keeps having issues with the: - 有什么问题?
  • 为什么您的代码不起作用?什么是错误/异常?
  • substring 的参数是开始字符和结束字符(加 1)。您已经设置好开始总是在结束字符之后。那是行不通的。
  • 我认为你想要的substring 是让程序将子字符串放到 next 空间。这似乎是正确的,但为了做到这一点,您必须告诉程序找到下一个空格。您可能想要使用不同版本的indexOf。这记录在this link

标签: java methods integer


【解决方案1】:

你想多了。您在感兴趣的事物之间有明确的分隔符,您可以在空格处拆分字符串,将第一个元素作为名称并使代码更清晰,考虑一下:

    String numbers = "name 5 20 26 4 2 13";
    String[] splitNumbers = numbers.split(" ");

    int sum =0;
    String name = splitNumbers[0]

    for(int i = 1; i < splitNumbers.length ; i++){
        sum += Integer.parseInt(splitNumbers[i]);
    }

现在只需将硬编码数字值更改为用户输入并完成。如果您害怕用户输入数字以外的内容,可以将其包围在 try-catch 中以检查格式异常。

【讨论】:

  • sum += splitNumbers[i];这只会给出一个连接的字符串。您应该将您的数字解析为 int 然后求和
【解决方案2】:

add() 方法的更好实现是将长字符串分解为字符串数组。您可以调用String 方法split(" ") 将字符串转换为字符串数组。

public static int adding(String input) {
    int sum = 0;
    String[] array = input.split(" ");

    //starts from 1 because array[0] is the name of the series
    for (int i = 1; i < array.length; i++) {
        sum += Integer.parseInt(array[i]);
    }
    return sum;
}

希望这会有所帮助!

【讨论】:

  • sum += array[i];这只会给出一个连接的字符串。您应该将您的数字解析为 int 然后求和
  • 哎呀不小心漏掉了哈哈。谢谢顺便说一句!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
相关资源
最近更新 更多