使用循环将一串数字从Scanner转换为整数?

时间:2016-03-03 23:35:38

标签: java

有一项任务要求我从一系列数字的用户那里获取输入。 ex。(1 12 -34 9)然后我被要求确定正数和负数的数量。这堂课没有进入任何一个简单的"这个问题的解决方案,如数组,string.split(),缓冲区等......所教授的最先进的方法是使用循环。我的问题是如何在没有上述方法的情况下采用字符串数字并单独分开?我可以采取其余的方式,我确定没有并发症,但这一步让我不知所措。任何输入都会有帮助。感谢

3 个答案:

答案 0 :(得分:0)

大概你从一个包含所有数字的字符串开始 - 我称之为numString。 然后:

    ArrayList<String> numbers = new ArrayList<String>();
    String aNumber = "";
    for (int i = 0; i < numString.length(); i++){
        String letter = numString.substring(i, i+1);
        if (letter.equals(" ")){
            numbers.add(aNumber);
            aNumber = "";
        }
        else{
            aNumber += letter;
        }
     }
    ArrayList<String> negatives = new ArrayList<String>();
    ArrayList<String> positives = new ArrayList<String>();
    for (String s : numbers){
        if(s.contains("-")){
            negatives.add(s);
        }else{
            positives.add(s);
    }
    System.out.println("There were " + positives.size() + "positive numbers.");
    System.out.println("There were " + negatives.size() + "negative numbers.");
    System.out.println("Making a total of " + numbers.size() + "numbers.");

当然,我只会在你学到的知识背景下推荐这个解决方案。否则,这不是最好的方法。 祝好运!

编辑 - 或者 - 更快但更逻辑复杂的选项: 应该有尽可能多的&#34; - &#34;作为负数,比总数少一个空间 - 以及与totalCount减去negativeCount一样多的正数。 所以在伪代码中:

NegativesCount = count(&#34; - &#34;);

PositivesCount = count(&#34;&#34;)+ 1 - NegativesCount;

并在代码中:

    int dashCount = 0;
    int spaceCount = 0;
    for (int i = 0; i < numString.length(); i++){
        String letter = numString.substring(i, i + 1);
        if (letter.equals(" ")){
            spaceCount++;
        }
        else if(letter.equals("-")){
            dashCount++;
        }
    }
    int negCount = dashCount;
    int posCount = spaceCount - 1 + dashCount;
    System.out.println("There were " + posCount + "positive numbers.");
    System.out.println("There were " + negCount + "negative numbers.");
    System.out.println("Making a total of " + spaceCount + "numbers.");

答案 1 :(得分:0)

我注意到,分配措辞令人困惑的方式与正在运行的程序的误导性示例相结合,使我相信这些数字是一次性输入的,而实际上数字会被提示输入一个一次。我可以轻松编写处理THIS方法的程序。感谢所有回复,我为一个无处可回答的问题道歉。只是让你不要以为我在这里疯了就是&#34;例如&#34;程序中应该运行的程序:

输入一个整数,输入结束,如果它是0:1 2 -1 3 0

积极数为3

否定数为1

注意输入看起来好像是一行输入-_-

答案 2 :(得分:-1)

执行此操作的最佳方法是使用正则表达式。

您可以计算后跟-ve符号的实例来计算负整数的数量。并计算后跟数值的实例来计算正整数的数量。