2012-04-02 171 views
1

这是一项家庭作业。我必须编写一个程序,输出一个正好具有8个字符的文本(如果没有足够的空间,请添加空格,如果太多,请删除字符),然后在“|”之间添加30个“#”字符线,取决于给定的值。值可以是int或double,int输入范围从0到30,双倍从0.00到1.00。
30的整数或1.00的两倍等于30个“#”字符。
15或两个0.50的整数等于15个“#”字符。
输入可以在一行或多行。if(scanner.nextInt){}被忽略(java)

例如
输入
WS2009 15
输出
WS2009 2空间 这里 | ############### 15空格这里 |

这是我迄今熟了起来:

http://pastebin.com/LCuASiuD

不必要println()和弯路与int1double1是测试的原因。

问题是,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"); 
     } 
    } 

回答

2

这实际上没有什么错,就我们所见 - 它应该可以正常工作。基于这种怀疑,我从pastebin编译你的源代码并运行它,事实上,它的工作方式和预期的一样。我感觉到一个真正的桌面碰撞情景即将出现。

+0

由于我没有得到格式化,我做了一个我想要回答的截图。 http://666kb.com/i/c2lsyi21l0tfp7wuu.png – user1308176 2012-04-02 14:36:29

+0

我刚发现它的工作原理是,如果这个值是一个整数,如果它是一个double,它就不起作用! – user1308176 2012-04-02 14:47:31

+0

问题解决: 小数位的德国分隔符是一个“,”和我的编辑器/ JDK或任何使用这个本地默认值,并期望一个“,”但这个输入数字与一个“。”分隔。现在我得知如何解决这个问题。 我不能回答我自己的问题,因为我是一个新用户。 – user1308176 2012-04-02 14:58:56