Java Basic我想提示用户9位数的邮政编码

时间:2014-07-07 02:47:16

标签: java string

我对Java很新,但我非常热衷于学习它。我想一步一步地解决问题

我试着一块一块地做作业。

我想要求用户输入9位数的邮政编码,例如701152014,而不是像70115那样的5位数字。

我想继续询问用户,直到他们输入9位数字,如701152014

如果他们输了5个数字我想继续询问请输入9位数。

我使用NetBean。

的System.out.println(zipNew);这部分,它有点错误。它说错误。

所以我想提示用户,直到用户输入9位数的邮政编码。

我该怎么做?非常感谢你。

非常感谢你教我。我真的很想学习Java。谢谢。

    package week7;



    import javax.swing.*;

    public class test {
        public static void main(String[] args){

        //Scanner scanner = new Scanner(System.in);     

        String zip=JOptionPane.showInputDialog(null,"Enter your zip");
            String zipNew;
            int ziplength = (zip.length());

            if (ziplength == 9){
                  zipNew = zip;
                 }
            else if (ziplength !=9)
    {
    String zip = JOptionPane.showInputDialog(null,"please type 9 digit zip code not 5 digit");   //----this part is wrong
    }
   System.out.println(zipNew);  //----this part is wrong, 
    }

3 个答案:

答案 0 :(得分:2)

通常情况下,我会使用JFormattedField和/或DocumentFilter,但请保持简单......

基本思想是,你需要循环,直到你得到你需要的东西,例如......

String zip = null;
do {
    zip = JOptionPane.showInputDialog(null, "Enter your zip");
} while (zip != null && zip.length() < 9);

System.out.println("zip = " + zip);

这将循环直到用户按下[取消]或他们输入的值有9个字符。您需要注意,这可能导致zip等于null,您需要检查这一点。此外,没有什么能阻止用户输入非数字值...

仔细查看The while and do-while Statements了解更多详情

答案 1 :(得分:0)

首先,格式化很糟糕。不确定它是否在此处发布时发生,并且您实际上并未使用该格式,但您可能希望使其更具可读性。

您将String zip声明两次。你不能在同一个类中有两个同名的变量,所以在你的其他条件中(你不需要if ziplength!= 9,因为else保证条件为真)更改名称字符串或不要再次声明变量(例如,说zip = blahblah not String zip = blahblah in else)。

要回答您的问题,请使用do-while循环。这是一个例子:

String zip;
do {
zip = blahblah
} while (zip.length != 9)

答案 2 :(得分:0)

我的假设是:

 int ziplength = (zip.length());

你根本没有得到zipNew的长度,而是拉链的长度,而这似乎没有在任何地方声明。

我建议将此行更改为:

int ziplength = (zipNew.length());

我对java的经验很少,但仅仅从对其他语言的广泛理解来看,我相信你只是犯了一个简单的错误。

希望这有效! 欢呼声,

麦克