Finding all uppercase letters of a string in java

前端 未结 10 1060
后悔当初
后悔当初 2021-01-12 14:28

So I\'m trying to find all the uppercase letters in a string put in by the user but I keep getting this runtime error:

Exception in thread \"main\" java.lan         


        
相关标签:
10条回答
  • 2021-01-12 14:58

    Try this...

    Method:

    public int findUpperChar(String valitateStr) {
        for (int i = valitateStr.length() - 1; i >= 0; i--) {
            if (Character.isUpperCase(valitateStr.charAt(i))) {
                return i;
            }
        }
        return -1;
    }
    

    Usage:

    String passwordStr = password.getText().toString();
    
     .......
    
    int len = findUpperChar(passwordStr);
    
    if ( len != -1) {
    
          capitals exist.   
    
      } else {
    
          no capitals exist.            
    }
    
    0 讨论(0)
  • 2021-01-12 15:01

    You can increase the readability of your code and benefit from some other features of modern Java here. Please use the Stream approach for solving this problem. Also, I suggest importing the least number of libraries into your class. Please avoid using .* while importing.

    import java.util.Scanner;
    
    public class P43 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("Please give a string: ");
            String x = in.next();
            x.chars().filter(c -> Character.isUpperCase(c))
                    .forEach(c -> System.out.print((char) c + " "));
        }
    }
    

    Sample input:

    saveChangesInTheEditor

    Sample output:

    C I T E

    0 讨论(0)
  • 2021-01-12 15:06

    The array index out of bounds is due to the for loop not terminating on length - 1, it is terminating on length Most iterating for loops should be in the form:

    for (int i = 0; i < array.length; i++) {
        // access array[i];
    }
    

    It's the same with a string.

    Perhaps a cleaner way would be:

    String inputString; // get user input
    
    String outputString = "";
    
    for (int i = 0; i < inputString.length; i++) {
        c = inputString.charAt(i);
        outputString += Character.isUpperCase(c) ? c + " " : ""; 
    }
    System.out.println(outputString);
    

    Edit: Forgot String Doesn't implement Iterable<Character>, silly Java.

    0 讨论(0)
  • 2021-01-12 15:12

    The simplest way I know is to use regex replacement.

    isUp = x.replaceAll("[^A-Z]", "");
    

    In simple terms, this uses a regular expression which matches any character which is not in the A-Z range, and replaces it with an empty string.

    0 讨论(0)
  • 2021-01-12 15:15
    import java.util.Scanner;
    class Demo
    {
        public static void main(String[] args)
        {
             StringBuilder s=new StringBuilder();
             Scanner input = new Scanner(System.in);
             System.out.println("Enter your String");
             String str= input.nextLine();
    
             for(int i=0; i<str.length(); i++)
             {
                if(Character.isUpperCase(str.charAt(i)))
                {
                   System.out.print(str.charAt(i)+" ");
                }
             }
          }
    }
    
    0 讨论(0)
  • 2021-01-12 15:16
    public class Cama {
    
    public static void main(String[] args) {
        String camal = "getStudentByName";
        String temp = "";
        for (int i = 0; i < camal.length(); i++) {
            if (Character.isUpperCase(camal.charAt(i))) {
                System.out.print(" " + Character.toLowerCase(camal.charAt(i)));
            } else if (i == 0) {
                System.out.print(Character.toUpperCase(camal.charAt(i)));
            }else{
                System.out.print(camal.charAt(i));
            }
        }
    }
    }
    
    0 讨论(0)
提交回复
热议问题