Java - 如何在没有!@ $%^&*()?>的情况下从0打印到z

问题描述 投票:0回答:1

我正在尝试获取仅包含字母和数字的文本文件。在txt文件中还有非字母字符。

public class WordChanger2 {

    static int input = 2; /// input line length

    public static ArrayList<Character> str; /// a list containing characters.
    public static PrintWriter output; 
    public void saveToFile(int size,int lineSize){    

        if(size == lineSize){
            String s = "";
            for (Character str1 : str) {
                s+=str1;
            }
            output.println(s);
            return;
        }
        for(char i = '0';i<='z';i++){ //from number 0 to lower z
            str.add(i);
            saveToFile(size+1,lineSize);
            str.remove(str.size()-1);
            System.out.println(str); //showing the Characters on console
        }
    }

    public static void main(String[] args) throws FileNotFoundException {
        int lineSize = input;
        output = new PrintWriter("E:\\output.txt");  /// file path
        str = new ArrayList<Character>();

        WordChanger2 c =  new WordChanger2();
        c.saveToFile(0 ,lineSize);
        output.close();
        System.out.println("Done! check the Txt file on your E: drive");
    }
}

试图得到这个:

00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
0G
0H
0I
0J
0K
0L
0M
0N
0O
0P
0Q
0R
0S
0T
0U
0V
0W
0X
0Y
0Z
0a
0b
0c
0d
0e
0f
0g
0h
0i
0j
0k
0l
0m
0n
0o
0p
0q
0r
0s
0t
0u
0v
0w
0x
0y
0z
java char
1个回答
2
投票

Solution 1:

Character#IsLetterOrDigit(char)loop中使用for方法这是非常明确的。

for(char i = '0';i<='z';i++){ //from number 0 to lower z
    if (Character.IsLetterOrDigit(i) {
        str.add(i);
        saveToFile(size+1,lineSize);
        str.remove(str.size()-1);
        System.out.println(str); //showing the Characters on console
    }
}

Solution 2:

使用更多循环:

for(char i = '0';i<='9';i++){ //from number 0 to 9
    //do something
}
for(char i = 'A';i<='Z';i++){ //from letter A to Z
    //do something
}
for(char i = 'a';i<='z';i++){ //from letter a to z
    //do something
}

这可以改进,以避免代码重复

Solution 3: (credits for Andy Turner)

创建一个包含正确顺序的每个字母和数字的字符串,并在此字符串上循环以构建ouptut

String table = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (int i=0; i<table.size(); i++) {
    str.add(table.charAt(i));
    ...
}

旁注:我认为使用递归调用来做你想做的事情有点矫枉过正。为什么不构建一个字符串,在循环中追加字符以及循环结束时,将它写在任何你想要的地方?

© www.soinside.com 2019 - 2024. All rights reserved.