求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();
}
}
}
打印输出的结果为:
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;
}
}
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("小了");
}
}
}
}
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;
}
}