【问题标题】:Java - When there is no user input prevent an error message - HomeworkJava - 当没有用户输入时防止出现错误消息 - 作业
【发布时间】:2013-11-01 10:43:29
【问题描述】:

该程序应该接受用户输入的字符串并将其反向返回。 (例如“Hello”是输入“olleH”是输出。)您可以通过运行类似java ReverseCL2 Hello 的程序来执行此操作,但是,当没有输入字符串时,它会打印一个ArrayOutOfIndexException。我需要它来打印用户应该做什么(运行代码时请输入一个字符串。)我已经尝试过下面的内容以及if (args[0].equals(null))。提前感谢您的帮助:)

public class ReverseCL2
{
    public static void main(String[] args)
    {
        String s = args[0];
        String rev = "";
        if (args[0].isEmpty())
        {
            System.out.println("Input a string to be reversed");
        }
        else
        {
            for (int i=0; i<s.length(); i++) 
            {
                rev = s.charAt(i) + rev;
            }
            System.out.println(rev);
        }

    } 
}

【问题讨论】:

    标签: java


    【解决方案1】:

    首先检查 args.length 是否为零,即

    if(args.length == 0 || args[0].isEmpty())
    {
        // <Handle special case however you like>
    }
    

    您得到的ArrayIndexOutOfBoundsException 是当args 的大小为0 时尝试访问args[0] 的结果。

    【讨论】:

      【解决方案2】:
      public class ReverseCL2
      {
          public static void main(String[] args)
          {
              if(args.length == 0 || args[0].isEmpty())
              {
                  System.out.println("Input a string to be reversed");
                  return;
              }
      
              String s = args[0];
              String rev = "";
      
              for(int i = 0; i < s.length(); i++) 
              {
                  rev = s.charAt(i) + rev;
              }
      
              System.out.println(rev);
      
          } 
      }
      

      【讨论】:

      • +1:公平点 - 你(即 OP)仍然需要检查它然后是空的。
      • if(args.length == 0 || args[0].isEmpty()) 检查 empty arrayempty value... 此代码绝对正确。 (这确实是一个基本问题)
      • 是的,我知道 - 我观察到我回答问题的速度太快了,只是展示了如何避免异常,同时愚蠢地忘记了条件的第二部分。因此,我给了你赞成票,然后我纠正了自己的事实:)
      【解决方案3】:

      输入! 用于检查参数化数组值

      if (!args[0].isEmpty() && args.length==0)
      

      请参阅代码中的上述行。

          public class ReverseCL2
      {
          public static void main(String[] args)
          {
              String s = args[0];
              String rev = "";
              if (!args[0].isEmpty() && args.length==0)
              {
                  System.out.println("Input a string to be reversed");
              }
              else
              {
                  for (int i=0; i<s.length(); i++) 
                  {
                      rev = s.charAt(i) + rev;
                  }
                  System.out.println(rev);
              }
      
          } 
      }
      

      【讨论】:

        【解决方案4】:
        It simple arg0 is array so before get data from That check Array size 
        
        
        if(args.length == 0)
        {
            // <Show message to user >
        }else{
        
        // <write here Working code >
        
        }
        

        【讨论】:

          【解决方案5】:

          除了上述答案之外,还有一个更简单的代码(阅读虎钳)

          public static void main(String args[]) {
          
              switch (args.length) {
          
                  case 0 : System.out.println("Input a string to be reversed");
                      break;
                  default:    //your logic
          
              }
          }
          

          【讨论】:

          • 不幸的是,当args.length != 0 时,这不会对args[0] 进行空检查。
          • 该逻辑将出现在默认情况下(非零参数)。在处理数据之前,您始终可以检查是否为空或 null。
          猜你喜欢
          • 2019-09-05
          • 1970-01-01
          • 1970-01-01
          • 2018-11-07
          • 2021-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多