Javaの中でStringのプログラミングの練習問題について
53764 ワード
前言
日常の前言.
本文は萌新に适して、本文は萌新に适して、本文は萌新に适して~~~~今回shareいくつかのJavaの基本的な文法の応用Demo、私が初めてJavaを学ぶ时书いたので、すべて命令行の小さいプログラムで、とても记念の意义があります.この中の多くのプログラムは比較的に細かい処理をして、いくつかの方面はそんなに最適化しないかもしれませんが、結局私が初めて勉強した時のレベルで、許してください.興味のあるJava萌新が見られます~~
Q 1:入力した任意の0-999の整数を全て3桁出力(3桁未満)に補完する
Q 2:携帯電話番号を1つ入力し、真ん中の4桁を星で代用する
注意注意注意注意:携帯番号11位、直接intで爆発するので、覚えておいてください.
Q 3:コマンドラインから2文字列タイプの数値を入力し、出力された2つの数値の和を計算する
Q 4:入力された文字列の‘e’の頻度を統計する
Q 5:10個の0-100の間の乱数を生成して、配列の中で置いて、それから出力を並べ替えます
Q 6:コンソールに文字列とサブ文字列をそれぞれ入力し、文字列のサブ文字列の出現回数を計算する
私はどうしてこのような愚かな解法が好きですか??
Q 7:統計入力文字列中の中国語文字、英語文字、0-9数字文字のそれぞれの個数
Q 8:入力された数が正読逆読と同じ回文数であるか否かを判断する
この文の数の书いたことを见てみて、これは1つのごみを叫んで、私は本当に#¥@%@%!#,私はどのように勇気があって直接出したのですか??
思考問題:
1つのメールアドレスが合法かどうかを解析し、合法であればユーザー名の部分とそのメールアドレスが属するウェブサイトのドメイン名を印刷し、もしメールアドレスが法則に合わない場合、合法でない原因を表示するメールアドレスが合法でない要素:1)メールアドレスに@またはが含まれていない.2)メールアドレスに@または@が多く含まれている.3)メールアドレス.@の前の4)ユーザー名に他の文字が表示される場合、クラス名:MailTest、クラスには戻り値タイプbooleanというtestmail()という方法があります.がんばって、私はしばらく問題を書くのがおっくうで、申し訳ありません~~
締めくくり
これらはすべて私がJavaを学んだばかりの时に书いたので、书いたごみはしかしその时の心血で、偶然ひっくり返して萌新に分かち合うようで、役に立つことを望みます.Stringの使用はJavaではあまりにも一般的で、StringとStringBuffer、StringBuilderなど、これらの問題は検討されています.初学萌新不熟悉的可以看java.lang.Stringの公式APIドキュメント、引き続き努力しましょう!また、長年修理を怠っていて、バグ(理論的には致命的なバグはないはず)があるかもしれませんが、指摘してください.
日常の前言.
本文は萌新に适して、本文は萌新に适して、本文は萌新に适して~~~~今回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ドキュメント、引き続き努力しましょう!また、長年修理を怠っていて、バグ(理論的には致命的なバグはないはず)があるかもしれませんが、指摘してください.