Java数组列表



距离我上次使用Java已经有一段时间了,我正在努力复习一些东西。

import java.util.*;
public class bitStrings {
    public static void main(String [] args){
        Scanner inputBitString = new Scanner(System.in);        
        //input.
        String binArray;
        ArrayList<String> myArr = new ArrayList<String>();
        while(inputBitString.hasNext()){
            binArray=inputBitString.next();         
            myArr.add(binArray);
            System.out.println(myArr);      
            for(int i=0;i<myArr.size();i++){
                if(myArr(i)=="1") myArr(i)=="10";
                else myArr(i)=="01"
            }
        }
    }
}

所以我想将用户键盘输入的输入存储在一个数组中。因此,如果用户输入"1010",for循环将遍历数组,并将"1"替换为"10",将"0"替换为"01"。所以结果输出将是"10011001"

谢谢

我想说你的代码不能正常编译或工作。我会这样写:

if("1".equals(myArr.get(i))) {
    myArr.set(i, "10");
} else {
    myArr.set(i, "01");
}

注意风格——它很重要,即使是像这样微不足道的例子。

一开始没有注意到List的使用

要比较String的内容,您应该使用equals:

myArr.get(i).equals( "1" );

你可以这样做:

ArrayList<String> myArr = new ArrayList<String>();
ArrayList<String> myArrDub = new ArrayList<String>();
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
for (int i=0; i<str.length(); i++) {
    String tempStr = new String();
    tempStr += str.charAt(i);
    myArr.add(tempStr);
}
System.out.println(myArr);
for(int i=0;i<myArr.size();i++){
    if(myArr.get(i).equals("1"))
    myArrDub.add("10");
else
    myArrDub.add("01");
}

这可能不是最有效的方法,但它是有效的:

public class Main {
    public static void main( String[] args ) {
        String user = "1010";
        StringBuilder sb = new StringBuilder();
        for ( char c : user.toCharArray() ) {
            if ( c == '1' )
                sb.append( "10" );
            else
                sb.append( "01" );
        }
        System.out.println( sb );
    }
}

一般来说,在迭代列表时不能(或不应该)修改它。如果是我,我会将编码的值存储在一个新的(可能是临时的)数组列表中,然后在完成后重新命名旧的数组列表。

如前所述,应该使用.equals而不是==来比较字符串。此外,从List中读取值的语法是myArr.get(i);而不是你使用的myArr(i)

另外,当您使用Scanner#next()时,它将返回一个String,因此如果用户输入"1010",整个序列将存储在单个元素中,每个字符不会获得自己的索引。

最后,按照约定,类名应该以大写字母开头。

我是这样做的(使用控制台,而不是扫描仪)。我相信这就是你想要的效果:

import java.io.*;
import java.util.*;

public class BitStrings{
    public static void main(String[] args){
        Console c = System.console();
        List<String> myArr = new ArrayList<String>();
        if(null == c){ 
            //exit gracefully
        }
        String entry = c.readLine("Enter the bits: "); // Wait for user entry
        for(int i = 0; i < entry.length(); i++){
            String bit = entry.substring(i, i+1);
            if("1".equals(bit)) myArr.add("10");
            else myArr.add("01");
        }
        //If we want to print it out
        for(String element : myArr) System.out.print(s);
    }

}

正确:

    ArrayList<String> myArr = new ArrayList<String>();
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    String str = bf.readLine();
    for (int i=0; i<str.length(); i++)
        myArr.add("" + str.charAt(i));
    for(int i=0;i<myArr.size();i++){
        if(myArr.get(i).equals("1"))
            myArr.set(i, "10");
        else
            myArr.set(i, "01");
    }

相关内容

  • 没有找到相关文章

最新更新