public static void main(String[] args) throws Exception {
int n = 1;
String x = "aaaa";
if(n>=0 && n<=xlength()){
Systemoutprintln( xsubstring(0,xlength()-n) );
}
}
将n的值 模拟用户输入的值即可。
一个“歼灭敌机”的小游戏,DEVc++编译通过:
#include <stdioh>
#include <conioh>
#include <stdlibh>
#include <windowsh>
#include <timeh>
#define zlx 10 //增量坐标(x)让游戏框不靠边
#define zly 3 //增量坐标(y)让游戏框不靠边
#define W 26 //游戏框的宽度
#define H 24 //游戏框的高度
int jiem[22][22]={0}, wj=10; //界面数组, 我机位置(初值为10)
int speed=4,density=30, score=0,death=0; //敌机速度, 敌机密度, 玩家成绩,死亡次数
int m=0,n=0; // m,n是控制敌机的变量
void gtxy (int x, int y) //控制光标位置的函数
{ COORD pos;
posX = x; posY = y;
SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );
}
void Color(int a) //设定颜色的函数(a应为1-15)
{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }
void yinc(int x=1,int y=0) //隐藏光标的函数
{ CONSOLE_CURSOR_INFO gb={x,y}; //y设为0即隐藏
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &gb);
}
void csh( ) //初始化函数
{ int i;
Color(7);
gtxy(zlx,zly); printf("╔"); gtxy(zlx+W-2,zly); printf("╗"); //左上角和右上角的框角
gtxy(zlx,zly+H-1); printf("╚"); gtxy(zlx+W-2,zly+H-1); printf("╝"); //下边两框角
for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly); printf("═"); } //打印上横框
for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); } //打印下横框
for(i=1;i<H-1;i++) { gtxy(zlx,zly+i); printf("║"); } //打印左竖框
for(i=1;i<H-1;i++) {gtxy(zlx+W-2,zly+i); printf("║"); } //打印右竖框
Color(14);gtxy(19,2); printf("歼灭敌机"); Color(10);
gtxy(37,5); printf("设置:Esc ");
gtxy(37,7); printf("发射:↑ ");
gtxy(37,9); printf("控制:← → ");
gtxy(37,11);printf("得分:%d",score);
gtxy(37,13); printf("死亡:%d",death);
yinc(1,0);
}
void qcjm( ) //清除界面函数
{int i,j;
for(i=0;i<H-2;i++)
for(j=0;j<W-4;j++){gtxy(zlx+2+j,zly+1+i);printf(" ");}
}
void feiji( ) //飞机移动函数
{int i,j;
for(i=21;i>=0;i--) //从底行往上是为了避免敌机直接冲出数组
for(j=0;j<22;j++)
{if(i==21&&jiem[i][j]==3) jiem[i][j]=0; //底行赋值0 以免越界
if(jiem[i][j]==3) jiem[i][j]=0, jiem[i+1][j]=3;
}
if(jiem[20][wj]==3&&jiem[21][wj]==1) death++;
}
void zidan( ) //子d移动函数
{ int i,j;
for(i=0;i<22;i++)
for(j=0;j<22;j++)
{if(i==0&&jiem[i][j]==2) jiem[i][j]=0;
if(jiem[i][j]==2) { if(jiem[i-1][j]==3) score+=100,printf("\7");
jiem[i][j]=0,jiem[i-1][j]=2; }
}
}
void print( ) //输出界面函数
{int i,j;
qcjm( );
for(i=0;i<22;i++)
for(j=0;j<22;j++)
{ gtxy(12+j,4+i);
if(jiem[i][j]==3) {Color(13);printf("□");}
if(jiem[i][j]==2) {Color(10);printf("");}
if(jiem[i][j]==1) {Color(10);printf("■");}
}
gtxy(37,11); Color(10);printf("得分:%d",score);
gtxy(37,13); printf("死亡:%d",death);
}
void setting( ) //游戏设置函数
{ qcjm( );
gtxy(12,4);printf("选择敌机速度:");
gtxy(12,5);printf(" 1快 2中 3慢>>");
switch(getche( ))
{case '1': speed=2; break;
case '2': speed=4; break;
case '3': speed=5; break;
default: gtxy(12,6);printf(" 错误!默认值");
}
gtxy(12,7);printf("选择敌机密度:");
gtxy(12,8);printf(" 1大 2中 3小>>");
switch(getche( ))
{case '1': density=20; break;
case '2': density=30; break;
case '3': density=40; break;
default: gtxy(12,9);printf(" 错误!默认值");
}
for(int i=0;i<22;i++)
for(int j=0;j<22;j++)jiem[i][j]=0;
jiem[21][wj=10]=1; jiem[0][5]=3;
gtxy(12,10);printf(" 按任意键保存");
getch( );
qcjm( );
}
void run( ) //游戏运行函数
{ jiem[21][wj]=1; //值为1代表我机(2则为子d)
jiem[0][5]=3; //值为3代表敌机
SetConsoleTitle("歼灭敌机"); //设置窗口标题
while(1)
{ if (kbhit( )) //如有键按下,控制我机左右移动、发射或进行设定
{int key;
if((key=getch( ))==224) key=getch( );
switch(key)
{ case 75: if(wj>0) jiem[21][wj]=0,jiem[21][--wj]=1; break;
case 77: if(wj<20) jiem[21][wj]=0,jiem[21][++wj]=1; break;
case 72: jiem[20][wj]=2; break;
case 27: setting( );
}
}
if(++n%density==0) //控制产生敌机的速度
{ n=0;srand((unsigned)time(NULL));
jiem[0][rand( )%20+1]=3;
}
if(++m%speed==0) {feiji( ); m=0;} //控制敌机移动速度(相对子d而言)
zidan( );
print( );
Sleep(120); //延时120毫秒
}
}
int main( )
{csh( );
run( );
return 0;
}
新手要方便写代码,可以收藏下面几个自编函数:
SetConsoleTitle("俄罗斯方块"); //设置窗口左上角标题栏处出现"俄罗斯方块"5个字
srand( (unsigned) time(NULL) ); //初始化随机数发生器
n= rand( ) % 20; //产生随机数0-19中的一个 如 rand( )%5 就产生0-4中的一个数
SetConsoleTitle( )函数在<windowsh>里, srand( )函数与rand( )函数要配合用,
就是同时要用,在<stdlibh>里。如果 rand( )%10+1 就产生1-10之中的一个数。
Sleep(300); //延时300毫秒(就是程序暂停300毫秒后继续运行)
system("cls"); //清屏(把窗口里的内容全部清除,光标定于(0,0)位置处)
这两个函数都在<windowsh>里。开头4个自编函数 编写如下:
void gtxy (int x, int y) //控制光标位置的函数
{ COORD pos;
posX = x;
posY = y;
SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );
}
void Color (int a) //设定颜色的函数
{ SetConsoleTextAttribute ( GetStdHandle ( STD_OUTPUT_HANDLE ),a ); }
void yinc (int x,int y) //隐藏光标的函数
{ CONSOLE_CURSOR_INFO gb={ x , y }; //gb代表光标
SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE), &gb );
}
void kou(int w,int h) //设置窗口大小的函数
{HANDLE hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;
COORD size={ w , h };
SetConsoleScreenBufferSize( hl , size );
SMALL_RECT rc={ 0, 0, w, h };
SetConsoleWindowInfo( hl, 1, &rc );
}
最后这个函数,参数w是宽h是高。里边5行中第一行定义了句柄型变量hl,并给它赋值。
第二行定义了坐标型结构体变量size,它的取值决定了缓冲区的大小。第三行就是使用
size的值设置好缓冲区大小。第四行定义了变量rc,它的值决定当前窗口显示的位置与
大小(不得超过缓冲区的大小)。前两个0,0是从缓冲区左上角0列0行位置处开始,后两
个参数可以小于w和h比如 rc={0,0,w-10,h-5}; 最后一行使用rc的值设置好窗口,中间
那个参数要为" 1 "或写“ true ”才有效。
fatherjson
注意:要使子组件可以在父组件展示需在父组件的json中引入并定义。
fatherwxml
注意:fatherTOson属性写在son标签上,fatherTOson不是固定的,可以修改其值。
sonjs
注意:即在sonjs的properties中定义父组件要传过来的参数类型
sonwxml
总结: 父组件向子组件传参,实际上就是在父组件中引入子组件的时候,带上一个属性fatherTOson,并且给其赋值,然后子组件通过这个属性名称fatherTOson,获取其值。
sonwxml
sonjs
注意:bindtap='change'定义了一个方法在sonjs的methods完成向父组件传值。thistriggerEvent固定不变,myevent是在父组件中定义的方法。sonTOfather是传给父组件的变量名。
fatherwxml
注意:myevent是在父组件中定义的方法;sonTOfather是声明的变量接收子组件的值
fatherjs
注意:在fatherjs中声明变量sonTOfather,用来接收子组件穿来的参数。
/计算器/
import javaawt;
import javaxswing;
import javaxswingborder;
import javaawtevent;
public class Calculator implements ActionListener{
JFrame frame;
JPanel panel;
JTextField tfShow;/定义显示文本框/
JButton b1[]=new JButton[10]; /数字按钮/
JButton b2[]=new JButton[6]; / *** 作按钮/
boolean isNumber;/判断是否输入多位数字的变量/
double number;/存储输入数值、显示结果的变量/
double result;/存储中间运算结果的变量/
char operator;/存储当前 *** 作符的成员变量/
public Calculator(){
frame=new JFrame("计算器");
framesetSize(300,300);/指定框架窗口的大小/
framesetResizable(false);/使框架窗口不可改变大小/
JPanel contentPane=(JPanel)framegetContentPane();
contentPanesetBorder(new EmptyBorder(20,20,20,20));/绘制框架的指定大小的空透明边框/
tfShow=new JTextField("0",25);/指定属性的文本域/
tfShowsetHorizontalAlignment(JTextFieldRIGHT);/设置文本域中文本的对齐方式/
isNumber=true;/初始值设置/
number=0;/初始值设置/
result=0;/初始值设置/
operator=' ';/初始值设置/
for(int i=0;i<b1length;i++){
b1[i]=new JButton(IntegertoString(i));/创建数字按钮/
b1[i]setActionCommand(IntegertoString(i));
b1[i]addActionListener(this);
b1[i]setForeground(Colorblue);
}
String bs[]={"/","","-","C","+","="};
for(int i=0;i<b2length;i++){
b2[i]=new JButton(bs[i]);/创建 *** 作按钮/
b2[i]setActionCommand(bs[i]);
b2[i]addActionListener(this);
b2[i]setForeground(Colorred);
}
panel=new JPanel();
panelsetLayout(new GridLayout(4,5));
paneladd(b1[1]);
paneladd(b1[2]);
paneladd(b1[3]);
paneladd(b2[0]);
paneladd(b1[4]);
paneladd(b1[5]);
paneladd(b1[6]);
paneladd(b2[1]);
paneladd(b1[7]);
paneladd(b1[8]);
paneladd(b1[9]);
paneladd(b2[2]);
paneladd(b1[0]);
paneladd(b2[3]);
paneladd(b2[4]);
paneladd(b2[5]);
frameadd(tfShow,BorderLayoutNORTH);/将文本框放置在框架上方/
frameadd(panel,BorderLayoutCENTER);/将装有按钮组的panel放在框架的中心/
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);/设置框架窗口的默认窗口关闭 *** 作/
framesetVisible(true);/设置框架可见/
}
public double getDisplay(){/返回要显示的结果/
return number;
}
public void reDisplay(){/刷新文本域的内容/
tfShowsetText(""+getDisplay());
}
/对输入数字的处理/
public void numberProcess(int num){
if(isNumber&&num!=0){
String s1=IntegertoString(num);
String s2=IntegertoString((int)(thisnumber));
thisnumber=DoubleparseDouble(s2+s1);/对多位数字的处理/
}else{
thisnumber=num;
}
isNumber=true;/输入连续数字(即多位数字)时为真/
}
public void operationProcess(char operator){/根据输入的 *** 作符改变当前 *** 作符/
switch(operator){
case '-':
thisoperator='-';
break;
case '+':
thisoperator='+';
break;
case '':
thisoperator='';
break;
case '/':
thisoperator='/';
break;
}
result=number;
isNumber=false;/输入 *** 作符时表示输入连续数字的标记变量为假/
}
public void clear(){
number=0;
result=0;
}
public void equal(){/计算运算结果/
switch(operator){
case '-':
result=result-number;
break;
case '+':
result=result+number;
break;
case '':
result=resultnumber;
break;
case '/':
result=result/number;
break;
case ' ':
result=number;
break;
}
number=result; /把运算结果赋值给显示变量/
isNumber=false;
operator=' ';
}
public static void main(String args[]){
Calculator cal=new Calculator();/创建计算器/
}
public void actionPerformed(ActionEvent e){
String command=egetActionCommand();/获取按钮激发的 *** 作事件的命令名称/
char c=commandcharAt(0);/将按钮命令名称的第一个字符赋值给一个字符c/
switch(c){
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
int number=IntegerparseInt(command);
numberProcess(number);/输入数字的处理/
break;
case '+':
case '-':
case '':
case '/':
operationProcess(c);/算数运算符的处理/
break;
case '=':equal();break;/计算运算结果/
case 'C':clear();break;/清零/
}
reDisplay(); /在文本域中显示信息/
}
}
运行结果:
1基础组件:
什么是组件:
<ul>
<li>组件是视图层的基本组成单元。</li>
<li>组件自带一些功能与微信风格的样式。</li>
<li>一个组件通常包括开始标签
和结束标签
,属性
用来修饰这个组件,内容
在两个标签之内。</li>
</ul>
2属性类型
<ul>
<li>Boolean 布尔值 组件写上该属性,不管该属性等于什么,其值都为true
,只有组件上没有写该属性时,属性值才为false
。如果属性值为变量,变量的值会被转换为Boolean类型</li>
<li>Number 数字 1
, 25</li>
<li>String 字符串 "string"</li>
<li>Array 数组 [ 1, "string" ] </li>
<li>Object 对象 { key: value } </li>
<li>EventHandler 事件处理函数名 "handlerName"
是 Page中定义的事件处理函数名</li>
<li>Any 任意属性 </li>
</ul>
3共同属性类型
id , class , style , hidden , data- , bind / catch
4特殊属性
几乎所有组件都有各自定义的属性,可以对该组件的功能或样式进行修饰
5组件列表
基础组件分为以下八大类:
视图容器(View Container):
view 视图容器 , scroll-view 可滚动视图容器, swiper 滑块视图容器
基础内容(Basic Content):
icon 图标, text 文字, progress 进度条
表单(Form):
button 按钮, form 表单, input 输入框, checkbox 多想选择器, radio 单选器, picker 列表选择器, slider 滚动选择器, switch 开关选择器, label 标签
*** 作反馈(Interaction)
action-sheet 上拉菜单
modal 模态d窗
toast 消息提示框
loading 加载提示符
导航Navigation
navigator 应用链接
多媒体(Media)
audio 音频, image , video 视频
地图
map 地图
画布Canvas
canvas 画布
flex: vt折曲,使收缩; vi玩去,收缩
最近因为体验了微信小程序 “百万工具箱” 里面的正则表达式工具,感觉到手机端输入正则表达式中的特殊字符十分的繁琐(反人类)。思前想后,决定撸一个可以解决繁琐输入的文本框组件。
不多说,先上开源地址吧:
npm >
#include <stdlibh>
#include <stdioh>
#include <timeh>
static int a,b,sign,result;
int fun(){
a = rand()%100+1;
b = rand()%100+1;
sign = rand()%4;
switch(sign){
case 0:
result = a+b;
printf("%d+%d=\n",a,b);
break;
case 1:
result = a-b;
printf("%d-%d=\n",a,b);
break;
case 2:
result = ab;
printf("%d%d=\n",a,b);
break;
case 3:
result = a/b;
printf("%d/%d=\n",a,b);
break;
}
return result;
}
void main(){
int i,flag=0,answer;
for(i = 0;i<10; i++){
fun();
printf("enter the answer\n");
scanf("%d",&answer);
if(answer == result)
flag++;
}
printf("Your Answer is%d",10flag);
}
大致的意思就是这样了 而且能跑了
具体的小细节你可以改改
楼主好运
以上就是关于一个java小程序的问题全部的内容,包括:一个java小程序的问题、有什么好玩的C语言小程序、微信小程序 父子组件间传参等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)