Javaの中でStringのプログラミングの練習問題について


前言
日常の前言.
本文は萌新に适して、本文は萌新に适して、本文は萌新に适して~~~~今回shareいくつかのJavaの基本的な文法の応用Demo、私が初めてJavaを学ぶ时书いたので、すべて命令行の小さいプログラムで、とても记念の意义があります.この中の多くのプログラムは比較的に細かい処理をして、いくつかの方面はそんなに最適化しないかもしれませんが、結局私が初めて勉強した時のレベルで、許してください.興味のあるJava萌新が見られます~~
Q 1:入力した任意の0-999の整数を全て3桁出力(3桁未満)に補完する
import java.util.Scanner;

/**
 *       0-999             (     0)
 */
public class StringTest1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.println("     999       ");
            String input = scan.next();
            try {
                int judgeNumber = Integer.parseInt(input);
                if (judgeNumber < 0 || judgeNumber > 999) {
                    System.out.println("     ");
                } else if (judgeNumber < 10) {
                    System.out.println("00" + judgeNumber);        
                } else if (judgeNumber < 100) {
                    System.out.println("0" + judgeNumber);
                } else {
                    System.out.println(judgeNumber);
                }
            } catch (NumberFormatException e) {
                System.out.println(e);
            }
            System.out.println("    ?Y(      )/    ");
            if (scan.next().equalsIgnoreCase("Y")) {
                break;
            }
        }
        scan.close();
    }

}


Q 2:携帯電話番号を1つ入力し、真ん中の4桁を星で代用する
import java.util.Scanner;

/**
 *        ,           
 */
public class StringTest2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.println("     11      ");
            //  long,int   
            String input = scan.next();
            try {
                Long.parseLong(input);
                if (input.length() != 11) {
                    System.out.println("           ");
                } else {
                    System.out.println(input.substring(0, 3) + "****" + input.substring(7 ,11));
                }
            } catch (NumberFormatException e) {
                System.out.println("         ...
"
+ e); } System.out.println(" ?Y( )/ "); if (scan.next().equalsIgnoreCase("Y")) { break; } } scan.close(); } }

注意注意注意注意:携帯番号11位、直接intで爆発するので、覚えておいてください.
Q 3:コマンドラインから2文字列タイプの数値を入力し、出力された2つの数値の和を計算する
import java.util.Scanner;

/**
 *                 ,            
 */
public class StringTest3 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.print("      1:
String1>"
); var var1 = scan.nextLine(); System.out.print(" 1:
String1>"
); var var2 = scan.nextLine(); try { var var3 = Double.parseDouble(var1); var var4 = Double.parseDouble(var2); System.out.println(var3 + var4); } catch (NumberFormatException e) { System.out.println(" " + e); } System.out.println(" ?Y( )/ "); if (scan.next().equalsIgnoreCase("Y")) { break; } } scan.close(); } }

Q 4:入力された文字列の‘e’の頻度を統計する
import java.util.Scanner;

/**
 *          'e'   
 */
public class StringTest4 {
    public static int getNumber(String var) {
        int counter = 0;
        char[] charArray = var.toCharArray();
        for (char c : charArray) {
            if (c == 'e') {
                counter++;
            }
        }
        return counter; 
    }
    
    public static void main(String[] args) {
        System.out.println("        ,  exit  ");
        Scanner scan = new Scanner(System.in);
        String temp = scan.next();
        while (!temp.equals("exit")) {
            System.out.println("'e'      : " +getNumber(temp));
            System.out.println("        ,  exit  ");
            temp = scan.next();
        }
        scan.close();
    }

}


Q 5:10個の0-100の間の乱数を生成して、配列の中で置いて、それから出力を並べ替えます
import java.util.Random;
import java.util.Arrays;
import java.util.Scanner;

/**
 *     0-100      ,     ,      
 */
public class StringTest5 {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner scan = new Scanner(System.in);
        while (true) {
            int[] array = new int[10];
            for (int i = 0; i < 10; i++) {
                array[i] = random.nextInt(101);
            }
            //Arrays.sort(array);
            Arrays.parallelSort(array);
            for (int i : array) {
                System.out.print(i + " ");
            }   
            System.out.println("
?Y( )/ "
); if (scan.next().equalsIgnoreCase("Y")) { break; } } scan.close(); } }

Q 6:コンソールに文字列とサブ文字列をそれぞれ入力し、文字列のサブ文字列の出現回数を計算する
import java.util.Scanner;

/**
 *                 ,                 
 */
public class StringTest7 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("      
MainString>"
); var mainStr = scan.nextLine(); System.out.print("
SubString>"
); var subStr = scan.nextLine(); var mainLengrh = mainStr.length(); var subLength = subStr.length(); var count = 0; for (var i = 0; i <= mainLengrh - subLength; i++) { if (mainStr.substring(i, i+subLength).equals(subStr)) { count++; } } System.out.println(count); scan.close(); } }

私はどうしてこのような愚かな解法が好きですか??
Q 7:統計入力文字列中の中国語文字、英語文字、0-9数字文字のそれぞれの個数
import java.util.Scanner;

/**
 *              、    、0-9          
 */
public class StringTest8 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int chineseCount = 0, engishCount = 0, digitCount = 0, otherCount = 0;
        while(true) {
            engishCount  = 0;
            chineseCount = 0;
            digitCount   = 0;
            otherCount   = 0;
            System.out.print("          (  exit  )
String>"
); var string = scan.next(); if (string.equals("exit")) { break; } for(int i = 0; i < string.length(); i++) { var character = string.charAt(i); if(character >= '0' && character <= '9') { digitCount++; } else if ((character >= 'a' && character <= 'z') || (character >= 'A' && character <= 'Z')) { engishCount++; } else if ((character < '0' && character >= 0) || (character > '9' && character < 'A') || (character > 'Z' && character < 'a') || (character > 'a' && character <= 127)){ otherCount++; } } chineseCount = string.length() - digitCount - engishCount - otherCount; System.out.println(" :
:"
+ chineseCount + "
"
+ engishCount + "
0-9 "
+ digitCount + " "); } scan.close(); } }

Q 8:入力された数が正読逆読と同じ回文数であるか否かを判断する
import java.util.Scanner;

/**
 *                     
 */
public class StringTest9 {
    public static boolean judge(String string1) {
        //   toCharArray()
        char[] charArray1 = string1.toCharArray();
        int length = charArray1.length;
        char[] charArray2 = new char[length];
        for (int i = 0; i < length; i++) {
            charArray2[length - i - 1] = charArray1[i];
        }
        String string2 = String.valueOf(charArray2);
        if (string1.equals(string2)) {
            return true;
        }
        return false;
    }
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(true) {
            System.out.print("         (  exit  )
Number>"
); var string = scan.next(); if (string.equals("exit")) { break; } try { Integer.parseInt(string); if (judge(string)) { System.out.println(string + " "); } else { System.out.println(string + " "); } } catch (NumberFormatException e) { System.out.println(e); } } scan.close(); } }

この文の数の书いたことを见てみて、これは1つのごみを叫んで、私は本当に#¥@%@%!#,私はどのように勇気があって直接出したのですか??
思考問題:
1つのメールアドレスが合法かどうかを解析し、合法であればユーザー名の部分とそのメールアドレスが属するウェブサイトのドメイン名を印刷し、もしメールアドレスが法則に合わない場合、合法でない原因を表示するメールアドレスが合法でない要素:1)メールアドレスに@またはが含まれていない.2)メールアドレスに@または@が多く含まれている.3)メールアドレス.@の前の4)ユーザー名に他の文字が表示される場合、クラス名:MailTest、クラスには戻り値タイプbooleanというtestmail()という方法があります.がんばって、私はしばらく問題を書くのがおっくうで、申し訳ありません~~
締めくくり
これらはすべて私がJavaを学んだばかりの时に书いたので、书いたごみはしかしその时の心血で、偶然ひっくり返して萌新に分かち合うようで、役に立つことを望みます.Stringの使用はJavaではあまりにも一般的で、StringとStringBuffer、StringBuilderなど、これらの問題は検討されています.初学萌新不熟悉的可以看java.lang.Stringの公式APIドキュメント、引き続き努力しましょう!また、長年修理を怠っていて、バグ(理論的には致命的なバグはないはず)があるかもしれませんが、指摘してください.