亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何輸出與其大寫長度相連的字符串

如何輸出與其大寫長度相連的字符串

臨摹微笑 2023-09-06 15:45:53
在這個程序中,我試圖創建一個方法來獲取字符串來計算大寫字母的數量。在程序結束時,我想顯示與其字符串關聯的最小數量以及與其字符串關聯的最大數量,這就是我遇到麻煩的地方。有沒有辦法以某種方式將它們連接或關聯在一起?到目前為止,這是我的代碼:import java.util.Scanner;import java.util.Arrays;public class test {    public static void main(String[] args) {        System.out.println("Please input a string:");        Scanner input = new Scanner(System.in);        String s1 = input.nextLine();        String s2 = input.nextLine();        String s3 = input.nextLine();        int i1 = sumLetter(s1);        int i2 = sumLetter(s2);        int i3 = sumLetter(s3);        int[] array = new int[3];        array[0] = i1;        array[1] = i2;        array[2] = i3;        Arrays.sort(array);        System.out.println(s1 + " has a maximum number of uppercase: "+ array[2]);        System.out.println(s3 + " has a maximum number of uppercase: "+ array[0]);    }    public static int sumLetter(String m) {        int count = 0;        for(int i = 0; i < m.length();i++) {            if(Character.isUpperCase(m.charAt(i)))                count++;        }        return count;    }    }
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您可以使用正則表達式來處理這個問題,如下所示:


public static void main(String[] args) {

  String str = "This string has FIVE uppercase characters within itself.";

  System.out.println(str.replaceAll("[^\\p{javaUpperCase}]","").length());

}

輸出:


5

這大致相當于以下內容:


public static void main(String[] args) {

  String str = "This string has FIVE uppercase characters within itself.";

  int uppercases = 0;

  for(char c : str.toCharArray()) {

    uppercases += Character.isUpperCase(c) ? 1 : 0;

  }

  System.out.println(uppercases);

}

輸出:


5

現在,假設您在某種方法中具有此功能(您確實這樣做了):


public static int sumLetter(String m) { ... }

您想要將字符串與大寫長度相關聯。制作一個簡單的數據類:


final class StringWithUppercaseSize {

  public final String string;

  public final int uppercaseLength;


  public StringWithUppercaseSize(String string, int uppercaseLength) {

    this.string = string;

    this.uppercaseLength = uppercaseLength;

  }


  public int getUppercaseLength() {

    return this.uppercaseLength;

  }

}

現在,您創建一個由這些對象組成的數組:


Scanner input = new Scanner(System.in);

String s1 = input.nextLine();

String s2 = input.nextLine();

String s3 = input.nextLine();

int i1 = sumLetter(s1);

int i2 = sumLetter(s2);

int i3 = sumLetter(s3);

StringWithUppercaseSize[] sizes = { new StringWithUppercaseSize(s1, i1), new StringWithUppercaseSize(s2, i2), new StringWithUppercaseSize(s3, i3) };

按大寫大小對數組進行排序:


Arrays.sort(sizes, Comparator.comparing(StringWithUppercaseSize::getUppercaseLength));

輸出最小/最大大寫字符串/長度:


System.out.println(sizes[0].string + " has a minimum number of uppercase: "+ sizes[0].uppercaseLength);

System.out.println(sizes[2].string + " has a maximum number of uppercase: "+ sizes[2].uppercaseLength);

輸入:


Abc

abc

aBC

輸出:


abc has a minimum number of uppercase: 0

aBC has a maximum number of uppercase: 2

這是我的完整測試代碼:


Main.java


class Main {

public static void main(String[] args) {

        System.out.println("Please input a string:");

        Scanner input = new Scanner(System.in);

        String s1 = input.nextLine();

        String s2 = input.nextLine();

        String s3 = input.nextLine();

        int i1 = sumLetter(s1);

        int i2 = sumLetter(s2);

        int i3 = sumLetter(s3);

        StringWithUppercaseSize[] sizes = { new StringWithUppercaseSize(s1, i1), new StringWithUppercaseSize(s2, i2), new StringWithUppercaseSize(s3, i3) };

        Arrays.sort(sizes, Comparator.comparing(StringWithUppercaseSize::getUppercaseLength));

        System.out.println(sizes[0].string + " has a minimum number of uppercase: "+ sizes[0].uppercaseLength);

        System.out.println(sizes[2].string + " has a maximum number of uppercase: "+ sizes[2].uppercaseLength);

    }

    public static int sumLetter(String m) {

        int count = 0;

        for(int i = 0; i < m.length();i++) {

            if(Character.isUpperCase(m.charAt(i)))

                count++;

        }

        return count;

    }

}

StringWithUppercaseSize.java


final class StringWithUppercaseSize {

  public final String string;

  public final int uppercaseLength;


  public StringWithUppercaseSize(String string, int uppercaseLength) {

    this.string = string;

    this.uppercaseLength = uppercaseLength;

  }


  public int getUppercaseLength() {

    return this.uppercaseLength;

  }

}

最后,請注意,不要在您打算保留和維護的代碼中執行此操作。有很多方法可以使事物更具可讀性和可維護性。例如,您可以為數據類編寫實際的 getter/setter。您可以將公共數據成員設為私有以保留信息隱藏。您可以將用戶輸入附加到列表中,然后使用 for-each 循環之類的東西來創建另一個大寫大小的列表。您可以使用 for-each 循環遍歷這兩個列表以創建一個 List StringWithUppercaseSize。您可能可以使用帶有 Collectors.maxBy 的 Stream 來查找最大元素而不是排序等。


查看完整回答
反對 回復 2023-09-06
  • 1 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號