ฉันมีรหัสนี้
public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;
ใครช่วยบอกทีว่าฉันทำอะไรผิดที่นี่และฉันจะแก้ไขอย่างไร ฉันต้องเริ่มต้นองค์ประกอบอาร์เรย์ทั้งหมดเป็น Boolean false ขอบคุณ
ฉันมีรหัสนี้
public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;
ใครช่วยบอกทีว่าฉันทำอะไรผิดที่นี่และฉันจะแก้ไขอย่างไร ฉันต้องเริ่มต้นองค์ประกอบอาร์เรย์ทั้งหมดเป็น Boolean false ขอบคุณ
คำตอบ:
ฉันต้องเริ่มต้นองค์ประกอบอาร์เรย์ทั้งหมดเป็น Boolean false
ใช้boolean[]
แทนเพื่อให้ค่าทั้งหมดเป็นค่าเริ่มต้นfalse
:
boolean[] array = new boolean[size];
หรือใช้Arrays#fill()
เพื่อเติมเต็มอาร์เรย์ทั้งหมดด้วยBoolean.FALSE
:
Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);
โปรดทราบว่าดัชนีอาร์เรย์เป็นศูนย์ บรรทัดที่คุณได้ก็จะก่อให้เกิดfreq[Global.iParameter[2]] = false;
ArrayIndexOutOfBoundsException
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับอาร์เรย์ใน Java โปรดดูบทช่วยสอน Oracle พื้นฐานนี้
Boolean[] array
มันช่วยให้คุณมีสามรัฐสำหรับแต่ละองค์ประกอบ: true
, false
และnull
ซึ่งจะเป็นประโยชน์สำหรับกรณีที่คุณต้องการทราบว่าสิ่งที่ "ไม่ได้ประมวลผล"
อาร์เรย์จะเริ่มต้นเป็นเท็จเมื่อคุณจัดสรร
อาร์เรย์ทั้งหมดใน Java เริ่มต้นเป็นค่าดีฟอลต์สำหรับชนิด ซึ่งหมายความว่าอาร์เรย์ของ ints เริ่มต้นเป็น 0 อาร์เรย์ของบูลีนจะเริ่มต้นเป็นเท็จและอาร์เรย์ของชนิดการอ้างอิงเริ่มต้นเป็น null
Boolean
ไม่ได้จึงจะเริ่มต้นboolean
null
อาร์เรย์ใน Java เริ่มสร้างดัชนีที่ 0 ดังนั้นในตัวอย่างของคุณคุณกำลังอ้างถึงองค์ประกอบที่อยู่นอกอาร์เรย์ทีละรายการ
มันน่าจะเป็น freq [Global.iParameter [2] -1] = false;
คุณจะต้องวนรอบอาร์เรย์เพื่อเริ่มต้นทั้งหมดบรรทัดนี้เริ่มต้นองค์ประกอบสุดท้ายเท่านั้น
อันที่จริงฉันค่อนข้างแน่ใจว่าเท็จเป็นค่าเริ่มต้นสำหรับบูลีนใน Java ดังนั้นคุณอาจไม่จำเป็นต้องเริ่มต้นเลย
ขอแสดงความนับถืออย่างสูง
Boolean
ไม่ได้จึงจะเริ่มต้นboolean
null
โดยจะเริ่มต้นเป็นfalse
ค่าเริ่มต้น ในอาร์เรย์ Java ถูกสร้างขึ้นบนฮีปและทุกองค์ประกอบของอาร์เรย์จะได้รับค่าดีฟอลต์ขึ้นอยู่กับประเภทของอาร์เรย์ สำหรับข้อมูลพิมพ์ค่าเริ่มต้นคือboolean
false
Boolean
ไม่ได้จึงจะเริ่มต้นboolean
null
ความถี่บูลีนคงที่สาธารณะ [] = บูลีนใหม่ [Global.iParameter [2]];
Global.iParameter [2]:
ควรเป็นค่า const