head first java学习笔记

2017.2.23
1、数组中对象的行为
exp:
Dog[ ] pets = new Dog[7]; //声明一个装载7个dog引用的dog数组
pets[0] = new Dog[];
pets[1] = new Dog[]; //创建数组

**pets[0].setSize(30); //使用数组调用封装的方法存数
int x = pet[0].getSize(); //使用数组调用封装方法取数**

2、实例变量与局部变量
局部变量(声明在方法中)没有默认值,在使用的时候必须初始化。
实例变量(声明在类中而不是在方法中)永远都会有默认值。

3、攻击网站游戏:

SimpleDotCom类:

public class SimpleDotCom {
int[] locationCells;
int numOfHits = 0;


   public void setLocationCells(int[] locs)
    {
        locationCells = locs;
    } 


public String checkYourself(String stringGuess) {
    int guess = Integer.parseInt(stringGuess);
    String result = "miss";
    for (int cell: locationCells)
    {
        if (guess == cell) {
            result = "hit";
            numOfHits++;
            break;
        }
    }
    if (numOfHits == locationCells.length)
    {
        result = "kill";
    }
    System.out.println(result);
    return result;
    }
}

GameHelper类:

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

public class GameHelper {

  private static final String alphabet = "abcdefg";
  private int gridLength = 7;
  private int gridSize = 49;
  private int [] grid = new int[gridSize];
  private int comCount = 0;


  public String getUserInput(String prompt) {
 String inputLine = null;
 System.out.print(prompt + "  ");
 try {
   BufferedReader is = new BufferedReader(
 new InputStreamReader(System.in));
   inputLine = is.readLine();
   if (inputLine.length() == 0 )  return null; 
 } catch (IOException e) {
   System.out.println("IOException: " + e);
 }
     return inputLine.toLowerCase();
 }

public ArrayList<String> placeDotCom(int comSize) {            // line 19
    ArrayList<String> alphaCells = new ArrayList<String>();
    String [] alphacoords = new String [comSize];      // holds 'f6' type coords
    String temp = null;                                // temporary String for concat
    int [] coords = new int[comSize];                  // current candidate coords
    int attempts = 0;                                  // current attempts counter
    boolean success = false;                           // flag = found a good location ?
    int location = 0;                                  // current starting location

comCount++;                                        // nth dot com to place
int incr = 1;                                      // set horizontal increment
if ((comCount % 2) == 1) {                         // if odd dot com  (place vertically)
  incr = gridLength;                               // set vertical increment
}

while ( !success & attempts++ < 200 ) {             // main search loop  (32)
location = (int) (Math.random() * gridSize);      // get random starting point
    //System.out.print(" try " + location);
int x = 0;                                        // nth position in dotcom to place
    success = true;                                 // assume success
    while (success && x < comSize) {                // look for adjacent unused spots
      if (grid[location] == 0) {                    // if not already used
         coords[x++] = location;                    // save location
         location += incr;                          // try 'next' adjacent
         if (location >= gridSize){                 // out of bounds - 'bottom'
           success = false;                         // failure
         }
         if (x>0 & (location % gridLength == 0)) {  // out of bounds - right edge
           success = false;                         // failure
         }
      } else {                                      // found already used location
          // System.out.print(" used " + location);  
          success = false;                          // failure
      }
    }
}                                                   // end while

int x = 0;                                          // turn good location into alpha coords
int row = 0;
int column = 0;
// System.out.println("\n");
while (x < comSize) {
  grid[coords[x]] = 1;                              // mark master grid pts. as 'used'
  row = (int) (coords[x] / gridLength);             // get row value
  column = coords[x] % gridLength;                  // get numeric column value
  temp = String.valueOf(alphabet.charAt(column));   // convert to alpha

  alphaCells.add(temp.concat(Integer.toString(row)));
  x++;

  // System.out.print("  coord "+x+" = " + alphaCells.get(x-1));

}
// System.out.println("\n");

return alphaCells;
   }
}

Game类:

import java.util.Scanner;

public class Game {
public static void main(String[] args)
{
    int numOfGuesses = 0;
    GameHelper helper = new GameHelper();

    SimpleDotCom theDotCom = new SimpleDotCom();
    int randomNum = (int) (Math.random() * 5);

    int[] locations = {randomNum, randomNum+1, randomNum+2};
    theDotCom.setLocationCells(locations);
    boolean isAlive = true;
    while (isAlive == true)
    {
        String guess = helper.getUserInput("enter a number");
        String result = theDotCom.checkYourself(guess);
        numOfGuesses++;
        if (result.equals("kill")) {
            isAlive = false;
            System.out.println("You took " + numOfGuesses + " guesses");
        }
    }
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值