import java.util.*;
public class A0918 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//讀取使用者的輸入
System.out.print("請輸入三個字串,每個字串中間以空白隔開: ");
String[] ary1 = scan.nextLine().split(" ");//以字串間的空白做分隔,把讀入的字串存入字串陣列.
System.out.print("請再輸入一次: ");
String[] ary2 = scan.nextLine().split(" ");
boolean isSame = true;//預設兩次輸入的都是一樣的字
for (int i = 0; i < 3 && i < ary1.length && i < ary2.length; i++) {//把兩個陣列中的,三個字拿來比對.
if (!ary1[i].equalsIgnoreCase(ary2[i])) {//假如不一樣.
isSame = false;//設定不一樣.
break;//跳離迴圈.
}
}
if (isSame)//假如一樣.
System.out.println("兩次輸入相同");
else//假如不一樣.
System.out.println("兩次輸入不相同");
}
}
網頁
BloggerAds 廣告
標籤
- Java (96)
- Android (27)
- 演算法 (21)
- c++ (19)
- JavaScript (7)
- OpenMp (6)
- Design Pattern (4)
- 日文歌曲 (4)
- 資料結構 (4)
- Foundation Knowledge Of Programming (3)
- QUT (2)
- CodingHomeWork (1)
- Database (1)
- 英文歌詞 (1)
搜尋此網誌
2013年6月23日 星期日
程式註解 for 甜甜圈.
學c++ , Java 未來發展
C/ C++ , 主要用在寫韌體或者是軟體和硬體做溝通(driver)的程式設計.
許多底層的功能都是用C/C++寫的 , Windows/Linux , 作業系統底層也是用這兩個語言去寫.
至於Java呢? 比較偏重於網路和多媒體的運用 , 因為Java有很多3rd party的套件,
你不必重新寫一個功能 , 只要在合法的範圍內, 使用這些第三方套件, 再搭配上
自己寫的函式, 就可以寫出一個應用程式.
這兩個語言各擅所長 , 只要你夠厲害 , 這兩個語言都很好.
許多底層的功能都是用C/C++寫的 , Windows/Linux , 作業系統底層也是用這兩個語言去寫.
至於Java呢? 比較偏重於網路和多媒體的運用 , 因為Java有很多3rd party的套件,
你不必重新寫一個功能 , 只要在合法的範圍內, 使用這些第三方套件, 再搭配上
自己寫的函式, 就可以寫出一個應用程式.
這兩個語言各擅所長 , 只要你夠厲害 , 這兩個語言都很好.
2013年6月19日 星期三
英雄聯盟 特效介紹
特效
產生特效的來源有很多,使用技能、BUFF (增益效果)、召喚師技能、道具等都可以引發特效。特效會改變目標物的基礎狀態。為了能更加融入《英雄聯盟 LoL》的世界中,對特效的了解是不可或缺的。
護甲:表示目標抵抗傷害的能力。護甲越高,受到損傷越輕。可以用技能、道具、和 BUFF 來增加或減少目標的護甲
攻速:表示目標發動普通攻擊的速度。可以用技能和道具來增加或減少目標的攻速
傷害:表示目標對其攻擊對象造成傷害的能力。有些技能可以直接對攻擊對象造成損傷。另外也可以用技能、道具、和 BUFF 來增加或減少目標的傷害力
恐懼:恐懼效果會讓目標物在一段時間內失去控制,只會漫無目的地移動
金錢:英雄會在戰鬥中隨時間持續獲得金錢,當消滅敵人時更可瞬間得到大量金錢。可以用技能、道具、和天賦來讓英雄獲得金錢的速度加快
抓取:當發動此特效時,目標物會被強制拉近施法者身邊
治癒:讓目標回復生命。效果分為立即性 (立刻回復生命) 和持續性 (在一段時間內加快生命回復速度) 兩種。某些道具能降低目標所受的治癒效果
無敵:保護目標物免於一切傷害,但目標仍可能受到負面特效的影響
擊退:當發動此特效時,目標物會被強制推離施法者身邊
吸血:當英雄攻擊敵人時並造成傷害時,可將一定比例的傷害轉化為自己的生命值
回復:讓目標加速回復生命或魔力
復活:當英雄死亡時能立刻復活,或縮短死亡等候時間
沉默:使目標無法使用技能或召喚師技能
緩速:使目標的移動速度變慢
潛行:當發動此特效時,敵人將無法看見施法者的身影,除非敵方具有偵查隱形目標的特殊能力
暈眩:使目標在一段時間內完全無法移動或使用技能和召喚師技能,並可打斷任何施用中的技能或召喚師技能
來源:http://lol.garena.tw/learn/gameplay/ability-and-effect.php
產生特效的來源有很多,使用技能、BUFF (增益效果)、召喚師技能、道具等都可以引發特效。特效會改變目標物的基礎狀態。為了能更加融入《英雄聯盟 LoL》的世界中,對特效的了解是不可或缺的。
護甲:表示目標抵抗傷害的能力。護甲越高,受到損傷越輕。可以用技能、道具、和 BUFF 來增加或減少目標的護甲
攻速:表示目標發動普通攻擊的速度。可以用技能和道具來增加或減少目標的攻速
傷害:表示目標對其攻擊對象造成傷害的能力。有些技能可以直接對攻擊對象造成損傷。另外也可以用技能、道具、和 BUFF 來增加或減少目標的傷害力
恐懼:恐懼效果會讓目標物在一段時間內失去控制,只會漫無目的地移動
金錢:英雄會在戰鬥中隨時間持續獲得金錢,當消滅敵人時更可瞬間得到大量金錢。可以用技能、道具、和天賦來讓英雄獲得金錢的速度加快
抓取:當發動此特效時,目標物會被強制拉近施法者身邊
治癒:讓目標回復生命。效果分為立即性 (立刻回復生命) 和持續性 (在一段時間內加快生命回復速度) 兩種。某些道具能降低目標所受的治癒效果
無敵:保護目標物免於一切傷害,但目標仍可能受到負面特效的影響
擊退:當發動此特效時,目標物會被強制推離施法者身邊
吸血:當英雄攻擊敵人時並造成傷害時,可將一定比例的傷害轉化為自己的生命值
回復:讓目標加速回復生命或魔力
復活:當英雄死亡時能立刻復活,或縮短死亡等候時間
沉默:使目標無法使用技能或召喚師技能
緩速:使目標的移動速度變慢
潛行:當發動此特效時,敵人將無法看見施法者的身影,除非敵方具有偵查隱形目標的特殊能力
暈眩:使目標在一段時間內完全無法移動或使用技能和召喚師技能,並可打斷任何施用中的技能或召喚師技能
來源:http://lol.garena.tw/learn/gameplay/ability-and-effect.php
猜數字範圍註解.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
class Frame extends JFrame implements ActionListener {
JTextField setnum = new JTextField();//範圍欄位
JTextField txtinput = new JTextField();//使用者輸入欄位
JTextField txtArea = new JTextField();//提示訊息欄位.
JLabel j = new JLabel("請輸入範圍0~?");
JLabel j2 = new JLabel("請輸入任意數:");
JButton OK = new JButton("go");//ok按鈕
int set, c, num;
int b = 0;
boolean setting = true;//已設定好範圍
boolean right = false;//答案錯誤
Frame() {
j.setBounds(20, 10, 100, 20);//設定標籤尺寸和範圍.
add(j);//把標籤加入frame
setnum.setBounds(110, 10, 80, 20);
setnum.addActionListener(this);//把範圍欄位加入行為監聽器
add(setnum);//把範圍欄位加入frame
j2.setBounds(20, 50, 100, 20);
add(j2);
txtinput.setBounds(110, 50, 80, 20);
txtinput.addActionListener(this);
add(txtinput);
txtinput.setEditable(false);
txtArea.setBounds(20, 80, 170, 20);
txtArea.setEditable(false);
add(txtArea);
OK.addActionListener(this);
OK.setBounds(120, 110, 70, 20);
add(OK);
setTitle("終極密碼");//設定frame名稱.
setLayout(null);
setBounds(200, 200, 220, 180);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == OK || e.getSource() == txtinput//當按下ok 或者 使用者觸發了 範圍設定欄位, 或是輸入猜測數字,則執行下列程式.
|| e.getSource() == setnum) {
if (setting) {//假如已設定範圍.
set = Integer.parseInt(setnum.getText());//讀入設定的數字.
c = set;//把數字設給c變數,
if (set <= 1) {//假如設定的數字小於1
txtArea.setText("請輸入大於1的任意數字");
} else {
num = (int) (Math.random() * c - 1) + 1;//亂數產生數字.
setting = false;//因為已經設定了正確的範圍, 所以把範圍設定旗標, 設為false,
txtArea.setText("請猜0~" + set + "的任意數字");
txtinput.setEditable(true);//把欄位設為不可編輯.
setnum.setEditable(false);
}
} else {
int g = Integer.parseInt(txtinput.getText());//把使用者讀入的字串轉為數字存到變數g.
if (g >= c || g <= b) {//假如數字小於0或是超出設定的範圍.
txtArea.setText("超出範圍" + b + "~" + c + "請從新輸入");
} else {
if (g == num) {
txtArea.setText("恭喜答對拉!");
right = true;
OK.setEnabled(false);
} else if (g > num) {
c = g;
txtArea.setText("錯瞜~小一些" + b + "~" + c);
txtinput.setText("");
} else if (g < num) {
b = g;
txtArea.setText("錯瞜~大一些" + b + "~" + c);
txtinput.setText("");
}
}
}
}
}
}
public class Davinci_Code {
public static void main(String[] args) {
new Frame();
}
}
2013年6月18日 星期二
數位時鐘
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class DigitalClock extends JLabel {
private String pattern;
private Timer timer;
private int delay;
public DigitalClock(String pattern) {
this.pattern = pattern;
this.delay = 1000;
createTimer();
timer.start();
}
public DigitalClock(String pattern, int delay) {
this.pattern = pattern;
this.delay = delay;
createTimer();
timer.start();
}
public DigitalClock() {
pattern = "hh:mm:ss a";
this.delay = 1000;
createTimer();
timer.start();
}
private void createTimer() {
timer = new Timer(delay, new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
setText(new SimpleDateFormat(pattern).format(new Date()));
}
});
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 229, 102);
JPanel contentPane = new JPanel();
frame.setContentPane(contentPane);
contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
DigitalClock digitalClock = new DigitalClock();
contentPane.add(digitalClock);
frame.setVisible(true);
}
}
參考來源 : http://tw.knowledge.yahoo.com/question/question?qid=1013061801638 , strawman
2013年6月16日 星期日
求 JAVA 程式碼註解
import java.util.Scanner;
public class GuessNumber03 {
public static void main(String[] args) {
int a, b, c, d;// 四位數字a , b , c , d
a = (int) (Math.random() * (9)) + 1;// 1~9 , 首位數不為零.
b = (int) (Math.random() * (10));// 0~9
c = (int) (Math.random() * (10));// 0~9
d = (int) (Math.random() * (10));// 0~9
String str = String.valueOf(a) + String.valueOf(b) + String.valueOf(c)
+ String.valueOf(d);// 把電腦產生的隨機數字 , 組合成字串.
String ans = "";// 儲存使用者猜的答案
Scanner sc = new Scanner(System.in);// 從命令列讀取輸入的值.
boolean check = false;// 預設為沒有猜到答案.
System.out.println("請輸入四個數字,數字對且位置正確得A,位置錯誤得B");
int count = 0;// 紀錄猜的次數
while (++count <= 10) { // 限制猜的次數到10次沒答對自動結束
while (!check) {// 如果沒答對 , 則繼續猜
ans = sc.next();// 讀取使用者輸入的數字.
String[] ansTmp = ans.split("");// 把答案abcd,分開存入暫存的字串陣列.
String[] inTmp = str.split("");// 把電腦的答案,分開存入暫存的字串陣列.
int A = 0;
int B = 0;
for (int i = 0; i < ansTmp.length; i++) {// 逐各取出使用者的答案.
for (int j = 0; j < ansTmp.length; j++) {// 逐各取出使用者的答案 ,
// 拿來和電腦的答案比對.
if (inTmp[j].equals(ansTmp[i]) && i == j)// 假如位置一樣且數字一樣
// , a++
A++;
else if (inTmp[j].equals(ansTmp[i]) && i != j)// 有數字但是位置不一樣.b++
B++;
}
}
System.out.println("判斷結果" + A + "A" + B + "B");
if (A == 4)// 假如4A,
check = true;// 設定猜到答案
if (A == 4 & B == 0)// 假如4A且B等於零 , 則印出,恭喜你,答對ㄌ
System.out.println("恭喜你,答對ㄌ");
break;
}
}
System.out.println("遊戲結束");
}
}
Java多重按鍵偵測.
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MKPD extends JFrame
{
public MKPD()
{
super("MKPD");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setContentPane(new KeyPanel());
pack();
setVisible(true);
}
public static void main(String[] args)
{
Runnable r = new Runnable()
{
public void run()
{
new MKPD();
}
};
EventQueue.invokeLater(r);
}
}
class KeyPanel extends JPanel
{
private enum GameState { MOVED, JUMPED, MOVED_THEN_JUMPED,
JUMPED_THEN_MOVED };
private GameState gs = null;
private boolean rightPressed = false;
private boolean upPressed = false;
private JLabel lblStatus = null;
KeyPanel()
{
KeyAdapter ka = new KeyAdapter()
{
public void keyPressed(KeyEvent ke)
{
handleKeyPress(ke);
}
public void keyReleased(KeyEvent ke)
{
handleKeyRelease(ke);
}
};
addKeyListener(ka);
lblStatus = new JLabel("", JLabel.CENTER);
lblStatus.setPreferredSize(new Dimension(200, 50));
add(lblStatus);
setFocusable(true);
requestFocus();
}
private void handleKeyPress(KeyEvent ke)
{
int keyCode = ke.getKeyCode();
if (keyCode == KeyEvent.VK_RIGHT)
rightPressed = true;
else
if (keyCode == KeyEvent.VK_UP)
upPressed = true;
updateState();
updateLabel();
}
private void handleKeyRelease(KeyEvent ke)
{
int keyCode = ke.getKeyCode();
if (keyCode == KeyEvent.VK_RIGHT)
rightPressed = false;
else
if (keyCode == KeyEvent.VK_UP)
upPressed = false;
updateState();
updateLabel();
}
private void updateLabel()
{
if (gs == null)
{
lblStatus.setText("");
return;
}
switch (gs)
{
case MOVED_THEN_JUMPED:
lblStatus.setText("Moved and then jumped");
break;
case JUMPED_THEN_MOVED:
lblStatus.setText("Jumped and then moved");
break;
case MOVED:
lblStatus.setText("Moved");
break;
case JUMPED:
lblStatus.setText("Jumped");
}
}
private void updateState()
{
if (rightPressed && upPressed)
{
if (gs == GameState.MOVED)
gs = GameState.MOVED_THEN_JUMPED;
else
if (gs == GameState.JUMPED)
gs = GameState.JUMPED_THEN_MOVED;
}
else
if (rightPressed)
gs = GameState.MOVED;
else
if (upPressed)
gs = GameState.JUMPED;
else
gs = null;
}
}
2013年6月15日 星期六
猜拳 麻煩幫我每句做編譯 JAVA
import java.util.*;
public class Sample {
public static void main(String[] args) {
String[] gg = { "剪刀", "石頭", "布" }; // 猜拳遊戲的三種拳.
Scanner scan = new Scanner(System.in);// 讀取命令列輸入的選項
Random rand = new Random(); // 隨機數字產生器
int p = 0, c = 0; // p:人贏的次數 , c:電腦贏的次數
while (p < 2 && c < 2) {//只要電腦或是人, 其中沒有任何一方贏兩次的話, 繼續執行猜拳的迴圈.
System.out.println("1.剪刀 2.石頭 3.布"); //印出遊戲的玩法.
int player = scan.nextInt() - 1;//使用者讀入的數字減-1
int comp = rand.nextInt(3);//電腦傳出0-2之中的其中一個數字.
System.out.println("你出" + gg[player]);//顯示人出的拳
System.out.println("電腦出" + gg[comp]);//顯示電腦出的拳
switch (player - comp) {//拿人的數字減去電腦的數字去比較,
case -2://人出剪刀 贏 電腦布 ,
p++;
break;
case -1://人出剪刀輸電腦石頭 , 人出石頭輸電腦布.
c++;
break;
case 1://人出石頭贏電腦剪刀, 人出布贏電腦石頭.
p++;
break;
case 2://人出布輸電腦剪刀.
c++;
break;
}
}
if (p == 2)//假如人贏兩次,印出你贏了
System.out.println("你贏了");
else //若電腦先贏兩次的話 , 因為迴圈結束,所以你輸了.
System.out.println("你輸了");
}
}
2013年6月14日 星期五
猜數字遊戲
import java.io.*;
public class GuessNumber {
private int[] answerSet = new int[10*9*8*7];
public GuessNumber() {
int index=0;
for (int n1=0; n1<10; n1++) {
for (int n2=0; n2<10; n2++) {
if ( n2 == n1) continue;
for (int n3=0; n3<10; n3++) {
if (n3 == n2 || n3 == n1 ) continue;
for (int n4=0; n4<10; n4++) {
if ( n4==n1 || n4==n2 || n4==n3) continue;
answerSet[index++] = n1*1000+n2*100+n3*10+n4;
}
}
}
}
guess();
}
private void input(int number) {
System.out.print( transform(number) + ", ?A?B = ");
int a=0,b=0;
try {
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
String str = br.readLine();
while ( str.length() != 4 ) {
System.out.println("輸入錯誤, 格式為 ?A?B ");
System.out.print( transform(number) + ", ?A?B = ");
str = br.readLine();
}
a = str.charAt(0) - '0';
b = str.charAt(2) - '0';
}
catch (IOException e) {
System.out.println("輸入時發生不可預期的錯誤...");
System.exit(0);
}
if (a == 4) {
System.out.println("The answer is " + transform(number));
System.exit(0);
}
reduce(number,a,b);
}
private void guess() {
for (int i=0; i< answerSet.length; i++) {
if ( answerSet[i] == -1 ) continue;
input ( answerSet[i]);
}
System.out.println("你騙人!! 根本沒這數字, ***!");
}
private void reduce(int number, int a, int b) {
for (int i=0; i< answerSet.length; i++) {
if ( answerSet[i] == -1) continue;
if (getA(number,answerSet[i]) != a || getB(number,answerSet[i]) != b )
answerSet[i] = -1;
}
for (int i=0; i < answerSet.length; i++) {
if ( answerSet[i] == -1) continue;
System.out.print( transform(answerSet[i]) + " ");
}
System.out.println();
}
private int getA(int n1, int n2) {
int a=0;
String str1 = transform(n1);
String str2 = transform(n2);
for (int i=0; i<4; i++) {
if (str1.charAt(i) == str2.charAt(i) )
a++;
}
return a;
} private String transform (int n) {
if ( n < 1000 )
return "0" + n;
else
return ""+n;
}
private int getB(int n1, int n2) {
int b = 0;
String str1 = transform(n1);
String str2 = transform(n2);
for (int i=0; i < 4; i++) {
for (int j=0; j<4 ; j++) {
if ( i == j) continue;
if ( str1.charAt(i) == str2.charAt(j) )
b++;
}
}
return b;
}
public static void main (String [] args) {
GuessNumber app = new GuessNumber();
}
}
參考來源
2013年6月6日 星期四
Java字串比較
第一個true會成立, 是因為 equals這個api就是用來測試兩個字串是否相等, 所使用的.
第二個true會成立, 是因為 Java內部有一個字串常數池 , test2 和 test都是指到參數池裡頭同一個"test"字串 , 所以會相等.
第三個false , 是因為test3這個變數, 指到了一個新的物件, 雖然新物件的值也是"test" , 但是和物件常數池裡的"test"物件是不相同.
所以為false.
public class StringComparison {
public static void main(String[] args)
{
String test = " test ";
String test2 = " test ";
String test3 = new String("test");
System.out.println(test.equals(test2));
System.out.println(test == test2);
System.out.println(test == test3);
}
}
訂閱:
文章 (Atom)
我的網誌清單
標籤
日文歌曲
(4)
股市
(7)
股票
(9)
英文歌詞
(1)
時事
(1)
硬體(hardware)
(1)
資料結構
(4)
演算法
(21)
數學(Math)
(4)
ACM
(3)
ajax
(7)
algorithms
(1)
Android
(27)
Blog Notes(部落格記事)
(6)
C
(9)
c++
(19)
CodingHomeWork
(1)
Database
(1)
Design Pattern
(4)
Foundation Knowledge Of Programming
(3)
GWT
(1)
How
(2)
J2EE
(1)
Java
(96)
Java語言
(4)
JavaScript
(7)
Leetcode
(4)
LOL
(1)
OpenMp
(6)
QUT
(2)
Uva
(2)
Yahoo知識問答
(11)