2、原理是利用静态成员记数,生成对象(以下这个类只能通过构造函数生成)的时候记数加1,JVM回收对象的时候记数-1。代码如下:public class Test { private static int count = 0; public Test() { count++; } public static int getInstanceNumbre() { return count; } protected void finalize() throws Throwable { count--; super.finalize(); } }
3、原理是构造函数设为private,这样就不能在类的外面生成对象。而在类里面手动生成一个对象(这就是唯一的对象),并且提供static的getInstance()方法使得类的外面可以获得这个生成的对象。代码如下:public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
1,没看懂 2,public class QueryInstance { private static int total = 0; public QueryInstance(){ total ++; } public static int getTotal() { return total; } public static void main(String[] args) throws Exception{ Class clazz = Class.forName("test.QueryInstance"); QueryInstance qi0 = (QueryInstance)clazz.newInstance(); for (int i = 0; i < 10; i++){ QueryInstance qi = new QueryInstance(); System.out.println(QueryInstance.getTotal()); } } } 3, public class Singleton { private int total; private Singleton(){ } private static Singleton instance; /** * * 考虑到并发的话,需要synchronized */ public synchronized static Singleton getInstance(){ if (instance == null){ instance = new Singleton(); } return instance; }
public void print(){ System.out.println(total ++); }
public static void main(String[] args) { for (int i = 0; i < 10; i ++){ Singleton instance = Singleton.getInstance(); instance.print(); } }}
1、代码如下:class Lamp { private int number; //灯的编号 private boolean isOn = true; //最初灯是开着的 public Lamp(int i) { number = i; } public int getNumber() { return number; } public boolean lampIsOn() { return isOn; } public void operate() { int count = 0; //开关灯次数 for (int i = 1; i <= number; i++) { //第i次操作时,如果i能整除number,则开关灯次数加1 if (number % i == 0) { count++; } } if (count % 2 != 0) { isOn = false; //如果开关灯次数为奇数,则最后灯是关着的 } } } public class Lamps { public static void main(String[] args) { Lamp[] la = new Lamp[100]; for (int i = 0; i < la.length; i++) { la[i] = new Lamp(i + 1); la[i].operate(); if (la[i].lampIsOn()) { System.out.println(la[i].getNumber()); } } } }
public class Test { public staic void main(String[] args) {
int count = 0;
for (int i = 1; i <=100; i++) { if (isCloot(i)) { count++; } } }
private static boolean isCloot(int num) { int count = 1; for (int i = 1; i < i / 2 + 1; i++) { if (num % i == 0) { count++; } } return count % 2 == 0; } }
写错了: public class Test { public staic void main(String[] args) {
int count = 0;
for (int i = 1; i <=100; i++) { if (isCloot(i)) { count++; } } System.out.println(count); }
private static boolean isCloot(int num) { int count = 1; for (int i = 1; i < num / 2 + 1; i++) { if (num % i == 0) { count++; } } return count % 2 == 0; } }
1 public class Baideng{ public static void main(String []args){ boolean []deng= new boolean[101];//数组默认值为false, 表示灯是开着的; for(int i=1;i<=100;i++){ for(int j=1;j<=100;j++){ if((j%i)==0) deng[j]=!deng[j]; } } for(int i=1;i<deng.length;i++){ if(!deng[i]) System.out.println("第"+i+"灯是亮着的"); } } }
brooksychen(初晨之阳) 正解,典型的面向对象编程,理解得太好了1、代码如下:class Lamp { private int number; //灯的编号 private boolean isOn = true; //最初灯是开着的 public Lamp(int i) { number = i; } public int getNumber() { return number; } public boolean lampIsOn() { return isOn; } public void operate() { int count = 0; //开关灯次数 for (int i = 1; i <= number; i++) { //第i次操作时,如果i能整除number,则开关灯次数加1 if (number % i == 0) { count++; } } if (count % 2 != 0) { isOn = false; //如果开关灯次数为奇数,则最后灯是关着的 } } } public class Lamps { public static void main(String[] args) { Lamp[] la = new Lamp[100]; for (int i = 0; i < la.length; i++) { la[i] = new Lamp(i + 1); la[i].operate(); if (la[i].lampIsOn()) { System.out.println(la[i].getNumber()); } } } }
public static void light_state(int n) { int s=0; for (int i=1;i<=n;i++) { for (int j=1;j<=i;j++) { if (i%j==0) { s++; } } if (s%2==0) System.out.println(i);//i是灯的编号 s=0; } }
1. package com.java.Test;import java.util.*;public class checkLamp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Lamp(100); } public static void Lamp(int n) { Map map = new HashMap(); StringBuffer sb = new StringBuffer(""); for (int i = 1; i <= n; i++) { for (int j = 1; j <= i/2; j++) { if (i % j == 0) { map.put(String.valueOf(i), String .valueOf(Integer.parseInt((String) map.get(String .valueOf(i)) == null ? "0" : (String) map .get(String.valueOf(i))) + j)); } } map.put(String.valueOf(i), String .valueOf(Integer.parseInt((String) map.get(String .valueOf(i)) == null ? "0" : (String) map .get(String.valueOf(i))) + i)); } String key = ""; int count = 0; Set set = map.keySet(); Iterator iterator = set.iterator(); while (iterator.hasNext()) { key = (String) iterator.next(); if (Integer.parseInt((String) map.get(key)) % 2 == 0) { sb.append(key + ","); count++; } } if (sb.toString() != null && !"".equals(sb.toString())) { System.out.println("亮着的灯的编号为: " + sb.toString().substring(0, sb.toString().length() - 1)); } else { System.out.println("所有的灯都熄灭了!"); } System.out.println("共有" + count + "盏灯亮着!"); } }
private static int count = 0;
public Test() {
count++;
}
public static int getInstanceNumbre() {
return count;
}
protected void finalize() throws Throwable {
count--;
super.finalize();
}
}
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
2,public class QueryInstance {
private static int total = 0;
public QueryInstance(){
total ++;
}
public static int getTotal() {
return total;
}
public static void main(String[] args) throws Exception{
Class clazz = Class.forName("test.QueryInstance");
QueryInstance qi0 = (QueryInstance)clazz.newInstance();
for (int i = 0; i < 10; i++){
QueryInstance qi = new QueryInstance();
System.out.println(QueryInstance.getTotal());
}
}
}
3,
public class Singleton {
private int total;
private Singleton(){
}
private static Singleton instance;
/**
*
* 考虑到并发的话,需要synchronized
*/
public synchronized static Singleton getInstance(){
if (instance == null){
instance = new Singleton();
}
return instance;
}
public void print(){
System.out.println(total ++);
}
public static void main(String[] args) {
for (int i = 0; i < 10; i ++){
Singleton instance = Singleton.getInstance();
instance.print();
}
}}
private int number; //灯的编号
private boolean isOn = true; //最初灯是开着的
public Lamp(int i) {
number = i;
}
public int getNumber() {
return number;
}
public boolean lampIsOn() {
return isOn;
}
public void operate() {
int count = 0; //开关灯次数
for (int i = 1; i <= number; i++) {
//第i次操作时,如果i能整除number,则开关灯次数加1
if (number % i == 0) {
count++;
}
}
if (count % 2 != 0) {
isOn = false;
//如果开关灯次数为奇数,则最后灯是关着的
}
}
}
public class Lamps {
public static void main(String[] args) {
Lamp[] la = new Lamp[100];
for (int i = 0; i < la.length; i++) {
la[i] = new Lamp(i + 1);
la[i].operate();
if (la[i].lampIsOn()) {
System.out.println(la[i].getNumber());
}
}
}
}
int count = 0;
for (int i = 1; i <=100; i++) {
if (isCloot(i)) {
count++;
}
} }
private static boolean isCloot(int num) {
int count = 1;
for (int i = 1; i < i / 2 + 1; i++) {
if (num % i == 0) {
count++;
}
}
return count % 2 == 0;
}
}
public class Test { public staic void main(String[] args) {
int count = 0;
for (int i = 1; i <=100; i++) {
if (isCloot(i)) {
count++;
}
}
System.out.println(count);
}
private static boolean isCloot(int num) {
int count = 1;
for (int i = 1; i < num / 2 + 1; i++) {
if (num % i == 0) {
count++;
}
}
return count % 2 == 0;
}
}
public class Baideng{
public static void main(String []args){
boolean []deng= new boolean[101];//数组默认值为false, 表示灯是开着的;
for(int i=1;i<=100;i++){
for(int j=1;j<=100;j++){
if((j%i)==0)
deng[j]=!deng[j];
}
}
for(int i=1;i<deng.length;i++){
if(!deng[i])
System.out.println("第"+i+"灯是亮着的");
}
}
}
private int number; //灯的编号
private boolean isOn = true; //最初灯是开着的
public Lamp(int i) {
number = i;
}
public int getNumber() {
return number;
}
public boolean lampIsOn() {
return isOn;
}
public void operate() {
int count = 0; //开关灯次数
for (int i = 1; i <= number; i++) {
//第i次操作时,如果i能整除number,则开关灯次数加1
if (number % i == 0) {
count++;
}
}
if (count % 2 != 0) {
isOn = false;
//如果开关灯次数为奇数,则最后灯是关着的
}
}
}
public class Lamps {
public static void main(String[] args) {
Lamp[] la = new Lamp[100];
for (int i = 0; i < la.length; i++) {
la[i] = new Lamp(i + 1);
la[i].operate();
if (la[i].lampIsOn()) {
System.out.println(la[i].getNumber());
}
}
}
}
{
int s=0;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=i;j++)
{
if (i%j==0)
{
s++;
}
}
if (s%2==0)
System.out.println(i);//i是灯的编号
s=0;
}
}
package com.java.Test;import java.util.*;public class checkLamp { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Lamp(100);
} public static void Lamp(int n) {
Map map = new HashMap();
StringBuffer sb = new StringBuffer("");
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i/2; j++) {
if (i % j == 0) {
map.put(String.valueOf(i), String
.valueOf(Integer.parseInt((String) map.get(String
.valueOf(i)) == null ? "0" : (String) map
.get(String.valueOf(i)))
+ j));
}
}
map.put(String.valueOf(i), String
.valueOf(Integer.parseInt((String) map.get(String
.valueOf(i)) == null ? "0" : (String) map
.get(String.valueOf(i)))
+ i));
}
String key = "";
int count = 0;
Set set = map.keySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
key = (String) iterator.next();
if (Integer.parseInt((String) map.get(key)) % 2 == 0) {
sb.append(key + ",");
count++;
}
}
if (sb.toString() != null && !"".equals(sb.toString())) {
System.out.println("亮着的灯的编号为: "
+ sb.toString().substring(0, sb.toString().length() - 1));
} else {
System.out.println("所有的灯都熄灭了!");
}
System.out.println("共有" + count + "盏灯亮着!");
}
}