为什么以下打印老板而不是低音?
String boss = "boss";
char[] array = boss.toCharArray();
for(char c : array)
{
if (c== 'o')
c = 'a';
}
System.out.println(new String(array)); //How come this does NOT print out bass?It prints boss.
Run Code Online (Sandbox Code Playgroud) 我会快速解决这个问题.我有一个简单的课程
class Vector{
float x, y;
}
Run Code Online (Sandbox Code Playgroud)
另一个类有这些对象的数组作为其成员
Vector[] buffer;
Run Code Online (Sandbox Code Playgroud)
我像这样初始化它:
buffer = new Vector[8];
for(Vector v: buffer)
v = new Vector();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在这个数组中访问这个对象的成员时,我直接得到一个NullPointerException到我的堆栈跟踪.也就是说,尚未构造数组的对象.另一方面,这个更传统的代码非常完美:
buffer = new Vector[8];
for(int i = 0; i<8; i++)
buffer[i] = new Vector;
Run Code Online (Sandbox Code Playgroud)
正如本讨论所指出的那样,编译后两者都应该相同.
我的问题是,为什么每个循环都无法从项目数组初始化/构造对象?
好的,所以我想要迭代一个ArrayList并删除一个specefic元素.但是,我在使用For-Each之类的结构时遇到了一些麻烦.当我运行以下代码时:
ArrayList<String> arr = new ArrayList<String>();
//... fill with some values (doesn't really matter)
for(String t : arr)
{
t = " some other value "; //hoping this would change the actual array
}
for(String t : arr)
{
System.out.println(t); //however, I still get the same array here
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何使't'成为'arr'的指针,以便我能够在for-each循环中更改值?我知道我可以使用不同的结构循环遍历ArrayList,但是这个看起来非常干净和可读,能够使't'成为指针会很好.
所有评论都表示赞赏!即使你说我应该吮吸它并使用不同的结构.
我正在尝试使用有关int数组的信息填充BitSets数组
//ar is a SIZE*SIZE 1-D int array, SIZE is a constant
//decare BitSet array
BitSet bs[] = new BitSet[SIZE];
//initialize BitSet array
for (BitSet x:bs)
x = new BitSet();
//populate BitSet array
for (int i = 0 ; i < ar.length ; i++)
if (ar[i] > 0)
bs[(i/SIZE)].set(SIZE-(i%SIZE));
Run Code Online (Sandbox Code Playgroud)
最后一行似乎是问题,但我看不出逻辑有什么问题.有任何想法吗?
为了使这一点更清楚,如果我有一个像0,3,4,5,0,1,0,0,1,2,7,0,2,3,0,3,2,0这样的数组, 0,0,2,1,5,8,0,0,0,0,0,1,0,0,0,6,0,0
我想得到一个可以表示为011101,001110,110110,001111,000001,000100的bitset数组