当前位置: 首页 > 知识库问答 >
问题:

如何在这些方法中处理字符串输入?[副本]

胡承悦
2023-03-14

如何处理用户在下面的每个方法中输入字符串。我使用不同的建议尝试了很多次,错误一直在无限循环。如何强制用户输入int而不是字符串,方法是添加下面的方法,而不是在它们当前的状态下修改它们。

    private void readMonth(Scanner keyboardIn)
    {
        boolean success = false;
        while(!success)
        {   
            try
            {
                System.out.print("Enter the month the account opened: ");
                int m = keyboardIn.nextInt();
                dateOpened.setMonth(m);
                success = true;
            }catch(Exception e)
            {
                System.out.println(e.getMessage());
            }   
          } 
       }    


    // Enter the year, checking for errors
    private void readYear(Scanner keyboardIn)
    {
        boolean success = false;
        while(!success)
        {   
            try
            {
                System.out.print("Enter the year the account opened: ");
                int y = keyboardIn.nextInt();
                dateOpened.setYear(y);
                success = true;
            }catch(Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
    }

共有1个答案

叶衡虑
2023-03-14

当您尝试输入除数字以外的任何字符时,IDValidation函数将返回false。我还打印了返回,所以你可以很容易地理解它是如何工作的。

import java.util.Scanner;

public class Daniel {
    private static Scanner sc;

    private static boolean idValidation(String id) {
        try {
            Integer.parseInt(id);
            System.out.println("return true");
            return true;
        } catch (NumberFormatException e) {
            System.out.println("return false");
            return false;
        }
    }

      private static void readMonth(Scanner keyboardIn)
        {
            boolean success = false;
            while(!success)
            {   
                try
                {
                    System.out.print("Enter the month the account opened: ");
                    String m = keyboardIn.nextLine();
                    if(!idValidation(m)){
                        return;
                    }
//                  dateOpened.setMonth(m);
                    success = true;
                }catch(Exception e)
                {
                    System.out.println(e.getMessage());
                }   
              } 
           }    


        // Enter the year, checking for errors
        private static void readYear(Scanner keyboardIn)
        {
            boolean success = false;
            while(!success)
            {   
                try
                {
                    System.out.print("Enter the year the account opened: ");
                    String y = keyboardIn.nextLine();
                    if(!idValidation(y)){
                        return;
                    }

//                  dateOpened.setYear(y);
                    success = true;
                }catch(Exception e)
                {
                    System.out.println(e.getMessage());
                }
            }
        }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        readMonth(sc);
        readYear(sc);
    }
}
 类似资料:
  • 我的代码不起作用,而且“checkValidNumber(瞬时值)”中有错误,表示字符串不能转换为double。

  • 问题内容: PHP中有多字节字符串函数来处理多字节字符串(例如:CJK脚本)。例如,我想通过使用python中的函数来计算一个多字节字符串中有多少个字母,但是它返回的结果不准确(即该字符串中的字节数) PHP中有像mb_strlen这样的软件包或函数吗? 问题答案: 使用Unicode字符串: 注意字符串前面。 要将字节字符串转换为Unicode,请使用:

  • 问题内容: 我想用Java初始化一个String,但是该字符串需要包含引号;例如:。我试着做: 但这不起作用。如何”在字符串中包含? 问题答案: 在Java中,你可以使用:

  • 我有一个string变量用来获取输入值。为了前任。 当我给出(约翰·乔尼)的价值时,它只显示约翰。有什么办法能弄到整根绳子吗?

  • 我正在用一种形式做一个简单的插入。 no_text dbname_m_db 我想回去看看。所以我要做4个测试,它们是 测试1:插入no_text 测试2:插入no_text_external 测试3:不插入任何文本 测试4:不同时插入两个 所以结果是,只有test3是成功地查看它。而其他3返回错误号格式例外:对于输入字符串:""。我不知道过滤它的最佳方法。这里的代码,我的工作。任何想法?

  • 本文向大家介绍c++中template对字符串的处理方法,包括了c++中template对字符串的处理方法的使用技巧和注意事项,需要的朋友参考一下 C++中的Template作用是把仅类型不同但功能相似的函数合并在一起,但是有时候template中的函数并不能满足所有的类型调用。如下所示: 所有的数字类型使用该模板都没有问题,但是string类型却不行,因为不支持有string到int的类型转换(