距离我上次使用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");
}