if(scanner.nextInt){}被忽略(java)

时间:2012-04-02 14:19:59

标签: java java.util.scanner

这是一项家庭作业。我必须编写一个程序,输出一个包含8个字符的文本(如果没有足够的话,添加空格,如果有太多则删除字符),然后在“|”之间添加最多30个“#”字符线,取决于给定的值。值可以是int或double,int输入范围从0到30,双倍从0.00到1.00 一个30或两倍的1.00等于30“#”字符 15或者0.50的双倍的int等于15“#”字符 输入可以是一行或多行。

  

示例
输入
WS2009 15
输出
WS2009 2个空格   这里 | ############### 这里有15个空格 |

这就是我到目前为止所做的事情:

  

http://pastebin.com/LCuASiuD

包含println()int1的不必要double1和弯路是出于测试原因。

问题是,从不调用if和else if条件。我知道,因为当我尝试它时输出“int”或“dubs”永远不会出现。我究竟做错了什么?在string1 = scanner1.next();之后,下一个元素应该是整数或双精度。是因为空间吗?

    Scanner scanner1 = new Scanner(System.in);
    String string1 = "";
    int int1 = 0;
    double double1 = 0;


    while(scanner1.hasNext())
    {   
        string1 = scanner1.next();
        System.out.println(string1);

        if(scanner1.hasNextInt())
        {
            int1 = scanner1.nextInt();
            System.out.println(drawBar(string1 , int1));
            System.out.println("int");
        }
        else if(scanner1.hasNextDouble())
        {
            double1 = scanner1.nextDouble();
            System.out.println(drawBar(string1 , double1));
            System.out.println("dubs");
        }
    }

1 个答案:

答案 0 :(得分:2)

据我们所知,实际上没有任何问题 - 它应该可以正常工作。基于这种怀疑,我从pastebin编译了你的源代码并运行它,实际上,它的工作方式与预期一致。我感觉到了一个真正的头桌碰撞场景。