求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字
阿新 • • 發佈:2019-01-10
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),
幾個數相加有鍵盤控制。
演算法思想分析
/*
* 1.怎麼得到這幾個數, 2+22+222+2222+22222 抽取成
* 2+0*10
* 2+2*10(2是上一個算式的和)
* 2+22*10(22是上一個算式的和)
* 2+222*10(222是上一個算式的和)
* 2+2222*10(2222是上一個算式的和)
* 看到這裡你會想到這是累加,一個累加求這幾個數,一個累加求和.
*/
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
System.out.println("請輸入一個數");
int num = sca.nextInt();
int n=0, sum =0;
for (int i = 1; i <= 5; i++) {
n = n*10 + num;
sum=sum+n;
}
System.out .println(sum);
}
九九乘法表:
public class Test1 {
public static void main(String[] args) {
for(int i = 1;i <= 9;i++) {
for(int j = 1;j <= i;j++) {
//“\t”代表製表符 System.out.print(j+"*"+i+"="+i*j+'\t');
}
System.out.println();
}
}
}
列印輸出的結果為:
求1—100的偶數和:
int sum = 0; //sum要初始化為0,定義這個變數只能在for迴圈外面
for(int i = 0; i <= 100; i++) {
if(i % 2 == 0) { //求偶數和 找出這個if判斷的條件
//奇數和可以把條件改為 i % 2 == 1
sum = sum + i;
}
}
System.out.println("sum = " + sum);
根據輸入的行數和列數列印:
public class Test3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入行數");
int a = scanner.nextInt();
System.out.println("請輸入列數");
int b = scanner.nextInt();
printStar(a,b);
}
public static void printStar(int a ,int b) {
for(int i = 1;i <= a;i++ ) {
for(int j = 1;j <= b;j++) {
System.out.print("我愛你"+'\t');
}
System.out.println();
}
return;
}
}
簡單的猜數字小遊戲(1-100之間,鍵盤輸入所猜的資料):
public class GuessNumber {
public static void main(String[] args) {
/*
* 需求:猜數字小遊戲(資料在1-100之間)
*/
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個整數");
int randomNum = (int) (Math.random() * 100 + 1);
while (true) {
int num = sc.nextInt();
if (num == randomNum) {
System.out.println("猜對了");
break;
} else if (num > randomNum) {
System.out.println("大了");
} else {
System.out.println("小了");
}
}
}
}
java實現控制檯五子棋:
package baishenghua.view;
import static java.lang.System.out;
import java.util.Scanner;
public class FiveChessView {
//17行17列的二維陣列,儲存棋盤資訊
public static char[][] fiveChess = new char[17][17];
public static Scanner sc = new Scanner(System.in);
/**
* 0.主方法
* @param args
*/
public static void main(String[] args) {
init();//方法呼叫,呼叫初始化棋盤佈局的方法,初始化棋盤介面資訊
// printChessView();//方法呼叫,呼叫列印棋盤佈局的方法
// int flag =1;//是否退出程式
// while(true){
// System.out.println("請輸入座標[0,0]:");
// int row = sc.nextInt();
// int col = sc.nextInt();
// fiveChess[row+1][col+1] = '@';
// printChessView();
// }
out.println("***************************");
out.println(" 五子棋遊戲v1.0 ");
out.println(" 1.開始遊戲 ");
out.println(" 0.退出遊戲 ");
out.println("***************************");
out.println("請選擇: ");
int cmd = sc.nextInt();
switch(cmd){
case 0:quit();break;
case 1:start();break;
default:out.println("命令輸入有誤!");
}
}
/**
* 1.初始化棋盤佈局的方法
*/
public static void init(){//初始化棋盤佈局
fiveChess[0][0] = ' ';
for (int i = 1; i < 17; i++) {//第一行資訊初始化
if (i < 11) {
fiveChess[0][i] = (char)(48+i-1);
} else {
fiveChess[0][i] = (char) (i - 11 + 'a');
}
}
for (int i = 1; i < 17; i++) {//第一列資訊初始化
if (i < 11) {
fiveChess[i][0] = (char)(48+i-1);
} else {
fiveChess[i][0] = (char) (i - 11 + 'a');
}
}
for(int i=1;i<17;i++){//除第一行和第一列外資訊初始化
for(int j=1;j<17;j++){
fiveChess[i][j]= '*';
}
}
}
/**
* 2.列印棋盤佈局的方法
*/
public static void printChessView(){//列印棋盤佈局
for(int i=0;i<17;i++){
for(int j=0;j<17;j++){
System.out.print(fiveChess[i][j]+" ");
}
System.out.println();
}
}
/**
* 3.退出遊戲介面的方法
*/
public static void quit(){
out.println("***************************");
out.println("成功退出遊戲!");
out.println("***************************");
System.exit(0);//退出控制檯應用程式
}
/**
* 4.開始遊戲介面的方法
*/
public static void start(){
out.println("***************************");
out.println("開始遊戲");
out.println("1.黑色");
out.println("0.白色");
out.println("***************************");
out.println("選擇棋子的顏色:");
int color = sc.nextInt();
printChessView();
startGame(color);//方法呼叫,呼叫startGame();方法
}
/**
* 5.開始下棋的方法
*/
public static void startGame(int color){
while(true){
if(color==0){
out.println("請白色棋子方下棋[行列]:");
String site = sc.next();//從控制檯獲取使用者輸入下棋的位置行列座標
char row = site.charAt(0);//獲取site變數下標為0的,第一個字元
char col = site.charAt(1);//獲取site變數下標為1的,第二個字元
int r = charToInt(row);
int c = charToInt(col);
if(r>=0&&c>=0){
if(havaChess(r,c)==0){
fiveChess[r+1][c+1] = 'O';
out.println("你輸入的座標為:"+row+"行"+col+"列");
//白色棋子方下棋成功,則輪到對方下棋,棋子顏色應該改變為黑色
printChessView();
if(winAtAll(color,r,c)>0){
out.println("白色棋子方獲勝!");
out.println("重新開始遊戲嗎?(y|n)");
String cmd = sc.next();
if(cmd.charAt(0)=='y'){
init();//重新初始化棋盤資訊
start();//呼叫重新開始的方法
}else{
out.println("遊戲結束!");
System.exit(0);
}
}
color = 1;
}
}
}else if(color==1){
out.println("請黑色棋子方下棋[行列]:");
String site = sc.next();//從控制檯獲取使用者輸入下棋的位置行列座標
char row = site.charAt(0);//獲取site變數下標為0的,第一個字元
char col = site.charAt(1);//獲取site變數下標為1的,第二個字元
int r = charToInt(row);
int c = charToInt(col);
if(r>=0&&c>=0){
if(havaChess(r,c)==0){
fiveChess[r+1][c+1] = '@';
out.println("你輸入的座標為:"+row+"行"+col+"列");
printChessView();
if(winAtAll(color,r,c)>0){
out.println("黑色棋子方獲勝!");
out.println("重新開始遊戲嗎?(y|n)");
String cmd = sc.next();
if(cmd.charAt(0)=='y'){
init();
start();
}else{
out.println("遊戲結束!");
System.exit(0);
}
}
//黑色棋子方下棋成功,則輪到對方下棋,棋子顏色應該改變為白色
color = 0;
}
}
}else{
out.println("棋子顏色選擇錯誤,請重新選擇!");
}
}
}
/**
* 6.轉換方法
* 功能:是把字元轉換成對應的整型數字
* 描述:例如:'0'->0,'1'->1,,'2'->2,'3'->3,'4'->4.......,'9'->9
* ,'a'->10,,'b'->11,'c'->12,'d'->13,'e'->14,'f'->15
* 除了0-9和a-f其他字元轉化成-1,
* -1代表座標位置不正確,座標越界
* 否則返回該字元所對應的整數型值
* @param ch
*/
public static int charToInt(char ch){
if(ch>='0'&&ch<='9'){//該字元在'0'-'9'
return (int)(ch -'0');//資料型別的轉換,隱式轉換:從小範圍到大範圍
}else if(ch>='a'&&ch<='f'){//該字元在'a'-'f'
return (int)(ch-'a'+10);//資料型別的轉換,從小範圍到大範圍隱式轉換(char轉成其對應的ascii編碼值)
}
return -1;
}
/**
* 7.判斷是否有棋子的方法
* @param r 行座標
* @param c 列座標
* @return 1代表棋子 0代表沒有棋子
*/
public static int havaChess(int r,int c){
if(fiveChess[r+1][c+1]=='*'){
return 0;
}
return 1;
}
/**
* 8.0 判斷所有方向輸贏的方法
* @param color 棋子的顏色
* @param r 行座標
* @param c 列座標
* @return 1代表贏 0代表未贏
*/
public static int winAtAll(int color, int r, int c) {
if (winAtH(color, r, c) > 0 || winAtV(color, r, c) > 0
|| winAtR(color, r, c) > 0 || winAtL(color, r, c) > 0) {
return 1;
}
return 0;
}
/**
* 8.1判斷水平方向輸贏的方法
* @param color 棋子的顏色
* @param r 行座標
* @param c 列座標
* @return 1代表贏 0代表未贏
*/
public static int winAtH(int color, int r, int c){
int counter = 1;//統計棋子個數
for(int i=c+2;i<17;i++){//向右判斷
if(fiveChess[r+1][i]==(color>0?'@':'O')){
counter++;
}
}
for(int i=c;i>0;i--){//向左判斷
if(fiveChess[r+1][i]==(color>0?'@':'O')){
counter++;
}
}
if(counter>=5){
return 1;
}
return 0;
}
/**
* 8.2判斷垂直方向輸贏的方法
* @param color 棋子的顏色
* @param r 行座標
* @param c 列座標
* @return 1代表贏 0代表未贏
*/
public static int winAtV(int color, int r, int c){
int counter = 1;//統計棋子個數
for(int i=r+2;i<17;i++){//向下判斷
if(fiveChess[i][c+1]==(color>0?'@':'O')){
counter++;
}
}
for(int i=r;i>0;i--){//向上判斷
if(fiveChess[i][c+1]==(color>0?'@':'O')){
counter++;
}
}
if(counter>=5){
return 1;
}
return 0;
}
/**
* 8.3判斷右上方向輸贏的方法
* @param color 棋子的顏色
* @param r 行座標
* @param c 列座標
* @return 1代表贏 0代表未贏
*/
public static int winAtR(int color, int r, int c){
int counter = 1;//統計棋子個數
for(int i=r,j=c+2;i>0&&j<17;i--,j++){//向右上方向判斷
if(fiveChess[i][j]==(color>0?'@':'O')){
counter++;
}
}
for(int i=r+2,j=c;j>0&&i<17;i++,j--){//向左下方向判斷
if(fiveChess[i][j]==(color>0?'@':'O')){
counter++;
}
}
if(counter>=5){
return 1;
}
return 0;
}
/**
* 8.4判斷左上方向輸贏的方法
* @param color 棋子的顏色
* @param r 行座標
* @param c 列座標
* @return 1代表贏 0代表未贏
*/
public static int winAtL(int color, int r, int c){
//需要填充實現程式碼
return 0;
}
}