java的输入语句问题

【问题分析】
必要的知识:in.nextLine();不能放在in.nextInt();代码段后面否则in.nextLine();会读入"\n"字符,但"\n"并不会成为返回的字符因为nextInt();接收一个整型字符,不会读取\n,nextline();读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符那么问题就在于for循环中的三个输入等待中,前两个是字符串(学校名称、校长姓名)最后一个是整型(建校时间),在第一次循环时并没有什么问题,但当循环进入第二次时,第一次循环输入的班级数目(假设为2),我们输入的是"2\n",nextInt();扫描了2这个值并返回(没有读取"\n"字符),而第二次循环一开始的nextLine();接收了上一个循环最后输入的"\n"字符,然而"\n"并不会成为返回字符,所以看起来有一种“跳过”的假象。
【解决方案】
接下来我们来看看解决方案方案1:(不推荐)
将Scanner in = new Scanner(System.in);放入循环体,因为只循环一次的话并不存在问题,所以可以解决“跳过”的问题。方案2:
解决在nextInt();后的nextLine();会接收"\n"的问题,可以在他们中间加一个in.nextLine();语句来接收这个"\n"。方案3:(可接收含空格的字符串,后文有说)
必要的知识:next();这个函数会扫描从有效字符起到空格,Tab,回车等结束字符之间的内容并作为String返回。nextLine();这个函数在你输入完一些东西之后按下回车则视为输入结束,输入的内容将被作为String返回。next();这个函数与之不同在于,next();什么都不输入直接敲回车不会返回,而nextLine()即使不输入东西直接敲回车也会返回。再举个例子,输入" & abc def gh\n",next();会返回abc,而nextLine();会返回 & abc def gh\n,我们看到的是 & abc def gh//附上代码
import java.util.*;public class testScanner{public static void main(String[]args){Scanner in = new Scanner(System.in);String str = in.nextLine();
//String str = in.next();可自行将上一行代码更换为此行代码尝试System.out.println(str);}}
所以把代码中的nextLine();换成next();便可以解决“跳过”问题。(因为next();不把上个循环的最后一个"\n"看成有效字符)
阅读(...) 评论()他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)在java 中如何用键盘输入一个字符型数值
public class Main{
public static void main(String []args){
Scanner sc=new Scanner(System.in);
a=sc.next();
if(a&65&&a&90){
System.out.print(a+32);}
system.out.print(a);
}代码有误,麻烦大家帮忙!谢谢!
写下你的评论...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 175 人关注过本帖
标题:java从键盘输入任意8个整数正数,输入&=0的数,提示“请输入正数”,计算8个 ...
来 自:河南周口郸城
等 级:论坛游民
帖 子:83
专家分:67
结帖率:100%
&&问题点数:50&&回复次数:12&&&
java从键盘输入任意8个整数正数,输入&=0的数,提示“请输入正数”,计算8个数和输出它们的总和,计算8个数平均值,最大值和最小值。
从键盘输入任意8个整数正数,
1,输入&=0的数,提示“请输入正数”。
2,计算8个数和输出它们的总和。
3,计算8个数平均值,最大值和最小值。
就是那个判断是否为负,那一块写不好了,很纠结,求解答,谢谢!
程序代码:import java.util.S
public class xfor {
&&& public xfor() {
&&&&&&&&// TODO Auto-generated constructor stub
&&& public static void main(String[] args) {
&&&&&&&&// TODO Auto-generated method stub
&&&&&&&&Scanner scan=new Scanner(System.in);
&&&&&&&&int []num=new int [9];
&&&&&&&&int i,sum=0,max=0,min=0;
&&&&&&&&double av=0;
&&&&&&&&int
&&&&&&&&&System.out.println(&请输入八个正整数:&);
&&&&&&&&for(i=0;i&8;i++)
&&&&&&&&&{&&&
&&&&&&&&&&&&t=scan.nextInt();
&&&&&&&&&&&&if(t&0)
&&&&&&&&&&&& {
&&&&&&&&&&&&&&& num[i]=t;
&&&&&&&&&&&&&&& max=min=num[0];
&&&&&&&&&&&&&&& if(num[i]&max) max=num[i];
&&&&&&&&&&&&&&&&&& if(num[i]&min) min=num[i];
&&&&&&&&&&&&&&&&&& sum+=num[i];
&&&&&&&&&&&&&&&&&& av=(double)sum/8;
&&&&&&&&&&&& }
&&&&&&&&&&&&else
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&& System.out.println(&请输入正数:&);&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& i=0;
&&&&&&&&&&&&&&& break;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&}
&&&&&&&&&&&&for(i=0;i&8;i++){
&&&&&&&&&&&&&&&&&System.out.print(num[i]+& &);
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&System.out.println(&&);
&&&&&&&&&&&&System.out.println(&sum=&+sum);
&&&&&&&&&&&&System.out.println(&average=&+av);
&&&&&&&&&&&&System.out.println(&max=&+max);
&&&&&&&&&&&&System.out.println(&min=&+min);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&}
等 级:业余侠客
帖 子:86
专家分:234
程序代码:package com.xiaoa.
import java.util.S
public class AFor {
&&& public static void main(String[] args) {
&&&&&&&&// 获取长度8的数组
&&&&&&&&int[] arr = getArr();
&&&&&&&&// 取数组最大值
&&&&&&&&int max = getMax(arr);
&&&&&&&&// 获取最小值
&&&&&&&&int min = getMin(arr);
&&&&&&&&// 获取平均值
&&&&&&&&int avg = getAvg(arr);
&&&&&&&&// 获取和
&&&&&&&&int sum = genSum(arr);
&&&&&&&&System.out.println(&sum=& + sum);
&&&&&&&&System.out.println(&average=& + avg);
&&&&&&&&System.out.println(&max=& + max);
&&&&&&&&System.out.println(&min=& + min);
&&& public static int genSum(int[] arr) {
&&&&&&&&int sum = 0;
&&&&&&&&for (int i = 0; i & arr. i++) {
&&&&&&&&&&&&sum += arr[i];
&&&&&&&&return
&&& public static int getAvg(int[] arr) {
&&&&&&&&int sum = genSum(arr);
&&&&&&&&int length = arr.
&&&&&&&&return sum /
&&& public static int getMin(int[] arr) {
&&&&&&&&int min = arr[0];
&&&&&&&&for (int i = 1; i & arr. i++) {
&&&&&&&&&&&&if (min & arr[i]) {
&&&&&&&&&&&&&&& min = arr[i];
&&&&&&&&&&&&}
&&&&&&&&return
&&& public static int getMax(int[] arr) {
&&&&&&&&int max = arr[0];
&&&&&&&&for (int i = 1; i & arr. i++) {
&&&&&&&&&&&&if (max & arr[i]) {
&&&&&&&&&&&&&&& max = arr[i];
&&&&&&&&&&&&}
&&&&&&&&return
&&& public static int[] getArr() {
&&&&&&&&int[] arr = new int[8];// 定义长度为8的数组存放数据
&&&&&&&&// 用循环给数组元素赋值
&&&&&&&&for (int i = 0; i & arr. i++) {
&&&&&&&&&&&&for (;;) {
&&&&&&&&&&&&&&& System.out.println(&请输入第& + (i+1) + &个数字(大于等于0):&);
&&&&&&&&&&&&&&& Scanner sc = new Scanner(System.in);
&&&&&&&&&&&&&&& int num = sc.nextInt();
&&&&&&&&&&&&&&& // 判断数字是否满足条件
&&&&&&&&&&&&&&& if (num & 0) {
&&&&&&&&&&&&&&&&&&&&arr[i] =
&&&&&&&&&&&&&&& } else {
&&&&&&&&&&&&&&&&&&&&// 不满足条件
&&&&&&&&&&&&&&&&&&&&System.out.println(&次数不满足条件,重新输入&);
&&&&&&&&&&&&&&&&&&&&i--;
&&&&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& break;
&&&&&&&&&&&&}
&&&&&&&&return
假如人生没有梦想,和咸鱼有什么区别!
等 级:业余侠客
帖 子:86
专家分:234
程序代码:package com.xiaoa.
import java.util.S
public class AFor {
&&& public static void main(String[] args) {
&&&&&&&&// 获取长度8的数组
&&&&&&&&int[] arr = getArr();
&&&&&&&&// 取数组最大值
&&&&&&&&int max = getMax(arr);
&&&&&&&&// 获取最小值
&&&&&&&&int min = getMin(arr);
&&&&&&&&// 获取平均值
&&&&&&&&int avg = getAvg(arr);
&&&&&&&&// 获取和
&&&&&&&&int sum = genSum(arr);
&&&&&&&&System.out.println(&sum=& + sum);
&&&&&&&&System.out.println(&average=& + avg);
&&&&&&&&System.out.println(&max=& + max);
&&&&&&&&System.out.println(&min=& + min);
&&& public static int genSum(int[] arr) {
&&&&&&&&int sum = 0;
&&&&&&&&for (int i = 0; i & arr. i++) {
&&&&&&&&&&&&sum += arr[i];
&&&&&&&&return
&&& public static int getAvg(int[] arr) {
&&&&&&&&int sum = genSum(arr);
&&&&&&&&int length = arr.
&&&&&&&&return sum /
&&& public static int getMin(int[] arr) {
&&&&&&&&int min = arr[0];
&&&&&&&&for (int i = 1; i & arr. i++) {
&&&&&&&&&&&&if (min & arr[i]) {
&&&&&&&&&&&&&&& min = arr[i];
&&&&&&&&&&&&}
&&&&&&&&return
&&& public static int getMax(int[] arr) {
&&&&&&&&int max = arr[0];
&&&&&&&&for (int i = 1; i & arr. i++) {
&&&&&&&&&&&&if (max & arr[i]) {
&&&&&&&&&&&&&&& max = arr[i];
&&&&&&&&&&&&}
&&&&&&&&return
&&& public static int[] getArr() {
&&&&&&&&Scanner sc = new Scanner(System.in);
&&&&&&&&try {
&&&&&&&&&&&&int[] arr = new int[8];// 定义长度为8的数组存放数据
&&&&&&&&&&&&// 用循环给数组元素赋值
&&&&&&&&&&&&for (int i = 0; i & arr. i++) {
&&&&&&&&&&&&&&& for (;;) {
&&&&&&&&&&&&&&&&&&&&System.out.println(&请输入第& + (i + 1) + &个数字(大于等于0):&);
&&&&&&&&&&&&&&&&&&&&int num = sc.nextInt();
&&&&&&&&&&&&&&&&&&&&// 判断数字是否满足条件
&&&&&&&&&&&&&&&&&&&&if (num & 0) {
&&&&&&&&&&&&&&&&&&&&&&&&arr[i] =
&&&&&&&&&&&&&&&&&&&&} else {
&&&&&&&&&&&&&&&&&&&&&&&&// 不满足条件
&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(&此数不满足条件,重新输入&);
&&&&&&&&&&&&&&&&&&&&&&&&i--;
&&&&&&&&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&return
&&&&&&&&} finally {
&&&&&&&&&&&&//关闭资源
&&&&&&&&&&&&sc.close();
}忘记关闭资源,补上!
假如人生没有梦想,和咸鱼有什么区别!
来 自:河南周口郸城
等 级:论坛游民
帖 子:83
专家分:67
回复 3楼 疯狂的小a
非常谢谢你的解答!
这是我做了更改后的代码
程序代码:import java.util.S
public class xfor {
&&& public xfor() {
&&&&&&&&// TODO Auto-generated constructor stub
&&& public static void main(String[] args) {
&&&&&&&&// TODO Auto-generated method stub
&&&&&&&&Scanner scan=new Scanner(System.in);
&&&&&&&&int []num=new int [8];
&&&&&&&&int i,sum=0,max=0,min=0;
&&&&&&&&double av=0;
&&&&&&&&int
&&&&&&&&System.out.println(&请输入八个正整数:&);
&&&&&&&&for(i=0;i&num.i++)
&&&&&&&&&{&&&
&&&&&&&&&&&&t=scan.nextInt();
&&&&&&&&&&&&num[i]=t;
&&&&&&&&&}
&&&&&&&&&&&&for(i=0;i&num.i++){
&&&&&&&&&&&&if(num[i]&0)
&&&&&&&&&&&& {
&&&&&&&&&&&&&&& System.out.println(&第&+(i+1)+&个数是负数请更正&);
&&&&&&&&&&&&&&& num[i]=scan.nextInt();&&
&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&for(i=0;i&num.i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&System.out.print(num[i]+& &);
&&&&&&&&&&&&&&&&&max=min=num[0];
&&&&&&&&&&&&&&&&&if(num[i]&max) max=num[i];
&&&&&&&&&&&&&&&&&if(num[i]&min) min=num[i];
&&&&&&&&&&&&&&&&&sum+=num[i];
&&&&&&&&&&&&&&&&&av=(double)sum/num.
&&&&&&&&&&&&}scan.close();
&&&&&&&&&&&&System.out.println(&&);
&&&&&&&&&&&&System.out.println(&sum=&+sum);
&&&&&&&&&&&&System.out.println(&average=&+av);
&&&&&&&&&&&&System.out.println(&max=&+max);
&&&&&&&&&&&&System.out.println(&min=&+min);&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
永不言败!never say die!
等 级:业余侠客
帖 子:86
专家分:234
回复 4楼 a
类名不规范。
假如人生没有梦想,和咸鱼有什么区别!
等 级:业余侠客
帖 子:86
专家分:234
回复 4楼 a
要是更正的时候再输入负数,岂不是GG了
假如人生没有梦想,和咸鱼有什么区别!
等 级:业余侠客
帖 子:86
专家分:234
程序代码:package com.xiaoa.
import java.util.A
import java.util.S
public class AFor {
&&& public static void main(String[] args) {
&&&&&&&&// 获取长度8的数组
&&&&&&&&int[] arr = getArr();
&&&&&&&&// 取数组最大值
&&&&&&&&int max = getMax(arr);
&&&&&&&&// 获取最小值
&&&&&&&&int min = getMin(arr);
&&&&&&&&// 获取平均值
&&&&&&&&int avg = getAvg(arr);
&&&&&&&&// 获取和
&&&&&&&&int sum = genSum(arr);
&&&&&&&&System.out.println(&sum=& + sum);
&&&&&&&&System.out.println(&average=& + avg);
&&&&&&&&System.out.println(&max=& + max);
&&&&&&&&System.out.println(&min=& + min);
&&& public static int genSum(int[] arr) {
&&&&&&&&Arrays.sort(arr);
&&&&&&&&return ((arr[0]+arr[arr.length-1])*arr.length)/2;
&&& public static int getAvg(int[] arr) {
&&&&&&&&Arrays.sort(arr);
&&&&&&&&return ((arr[0]+arr[arr.length-1])*arr.length)/2/arr.
&&& public static int getMin(int[] arr) {
&&&&&&&&Arrays.sort(arr);
&&&&&&&&return arr[0];
&&& public static int getMax(int[] arr) {
&&&&&&&&Arrays.sort(arr);
&&&&&&&&return arr[arr.length-1];
&&& public static int[] getArr() {
&&&&&&&&Scanner sc = new Scanner(System.in);
&&&&&&&&try {
&&&&&&&&&&&&int[] arr = new int[8];// 定义长度为8的数组存放数据
&&&&&&&&&&&&// 用循环给数组元素赋值
&&&&&&&&&&&&for (int i = 0; i & arr. i++) {
&&&&&&&&&&&&&&& for (;;) {
&&&&&&&&&&&&&&&&&&&&System.out.print(&请输入第& + (i + 1) + &个数字(大于等于0):&);
&&&&&&&&&&&&&&&&&&&&int num = sc.nextInt();
&&&&&&&&&&&&&&&&&&&&// 判断数字是否满足条件
&&&&&&&&&&&&&&&&&&&&if (num & 0) {
&&&&&&&&&&&&&&&&&&&&&&&&arr[i] =
&&&&&&&&&&&&&&&&&&&&} else {
&&&&&&&&&&&&&&&&&&&&&&&&// 不满足条件
&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(&此数不满足条件,重新输入&);
&&&&&&&&&&&&&&&&&&&&&&&&i--;
&&&&&&&&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&return
&&&&&&&&} finally {
&&&&&&&&&&&&//关闭资源
&&&&&&&&&&&&sc.close();
假如人生没有梦想,和咸鱼有什么区别!
来 自:湖南
等 级:版主
威 望:78
帖 子:1451
专家分:6301
1.我输入字符报InputMismatchException。
2.存到数组再遍历查找最值和排序之后取最值,还不如在输入过程中不断刷新最值。
like wind.
等 级:业余侠客
帖 子:86
专家分:234
回复 8楼 林月儿
程序代码:package com.xiaoa.
import java.util.A
import java.util.S
public class AFor {
&&& public static void main(String[] args) {
&&&&&&&&// 获取长度8的数组
&&&&&&&&int[] arr = getArr();
&&&&&&&&if(null==arr) {
&&&&&&&&&&&&System.exit(0);
&&&&&&&&// 取数组最大值
&&&&&&&&int max = getMax(arr);
&&&&&&&&// 获取最小值
&&&&&&&&int min = getMin(arr);
&&&&&&&&// 获取平均值
&&&&&&&&int avg = getAvg(arr);
&&&&&&&&// 获取和
&&&&&&&&int sum = genSum(arr);
&&&&&&&&System.out.println(&sum=& + sum);
&&&&&&&&System.out.println(&average=& + avg);
&&&&&&&&System.out.println(&max=& + max);
&&&&&&&&System.out.println(&min=& + min);
&&& public static int genSum(int[] arr) {
&&&&&&&&return ((arr[0]+arr[arr.length-1])*arr.length)/2;
&&& public static int getAvg(int[] arr) {
&&&&&&&&return ((arr[0]+arr[arr.length-1])*arr.length)/2/arr.
&&& public static int getMin(int[] arr) {
&&&&&&&&return arr[0];
&&& public static int getMax(int[] arr) {
&&&&&&&&return arr[arr.length-1];
&&& public static int[] getArr() {
&&&&&&&&Scanner sc = new Scanner(System.in);
&&&&&&&&try {
&&&&&&&&&&&&int[] arr = new int[8];// 定义长度为8的数组存放数据
&&&&&&&&&&&&// 用循环给数组元素赋值
&&&&&&&&&&&&for (int i = 0; i & arr. i++) {
&&&&&&&&&&&&&&& for (;;) {
&&&&&&&&&&&&&&&&&&&&System.out.print(&请输入第& + (i + 1) + &个数字(大于等于0):&);
&&&&&&&&&&&&&&&&&&&&int num = sc.nextInt();
&&&&&&&&&&&&&&&&&&&&// 判断数字是否满足条件
&&&&&&&&&&&&&&&&&&&&if (num & 0) {
&&&&&&&&&&&&&&&&&&&&&&&&arr[0] =
&&&&&&&&&&&&&&&&&&&&&&&&Arrays.sort(arr);
&&&&&&&&&&&&&&&&&&&&} else {
&&&&&&&&&&&&&&&&&&&&&&&&// 不满足条件
&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(&此数不满足条件,重新输入&);
&&&&&&&&&&&&&&&&&&&&&&&&i--;
&&&&&&&&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&return
&&&&&&&&} catch (Exception e){
&&&&&&&&&&&&System.out.println(&你的智商太低,系统拒绝你继续输入!&);
&&&&&&&&&&&&return null;
&&&&&&&&}finally {
&&&&&&&&&&&&//关闭资源
&&&&&&&&&&&&sc.close();
}你看这样可以不可以
[此贴子已经被作者于 23:39编辑过]
假如人生没有梦想,和咸鱼有什么区别!
来 自:湖南
等 级:版主
威 望:78
帖 子:1451
专家分:6301
挺好的,我也来一段吧
程序代码:package com.huawei.test0316;
import java.text.DecimalF
import java.util.S
public class Test1 {
&&& public static void main(String[] args) {
&&&&&&&&Scanner scan = new Scanner(System.in);
&&&&&&&&int max = 0;
&&&&&&&&int min = 0;
&&&&&&&&int sum = 0;
&&&&&&&&int
&&&&&&&&String inputEle = null;
&&&&&&&&for(int i = 0; i & 8; i++) {
&&&&&&&&&&&&System.out.printf(&请输入第%d个元素:&, i + 1);
&&&&&&&&&&&&inputEle = scan.next();
&&&&&&&&&&&&try {
&&&&&&&&&&&&&&& cur = Integer.parseInt(inputEle);
&&&&&&&&&&&&&&& if(cur &= 0) {
&&&&&&&&&&&&&&&&&&&&System.out.println(&请输入正数&);
&&&&&&&&&&&&&&&&&&&&i--;
&&&&&&&&&&&&&&&&&&&&continue;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& if(i == 0) {
&&&&&&&&&&&&&&&&&&&&max = min =
&&&&&&&&&&&&&&& }else{
&&&&&&&&&&&&&&&&&&&&if(max & cur){
&&&&&&&&&&&&&&&&&&&&&&&&max =
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&if(min & cur){
&&&&&&&&&&&&&&&&&&&&&&&&min =
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& sum +=
&&&&&&&&&&&&} catch (NumberFormatException e) {
&&&&&&&&&&&&&&& System.out.println(&error:&+e.getMessage());
&&&&&&&&&&&&&&& i--;
&&&&&&&&&&&&}
&&&&&&&&scan.close();
&&&&&&&&DecimalFormat dm = new DecimalFormat(&#.00&);
&&&&&&&&System.out.printf(&sum:%d\navg:%s\nmax:%d\nmin:%d\n&,
&&&&&&&&&&&&&&& sum, dm.format(sum*1.0/8), max, min);
like wind.
版权所有,并保留所有权利。
Powered by , Processed in 0.066356 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights ReservedJava程序加密问题。能不能在程序的用户界面加入必须输入已经设置好的密码才能进入程序,没输入正确就进不去程序?有教程吗?-CSDN论坛
Java程序加密问题。能不能在程序的用户界面加入必须输入已经设置好的密码才能进入程序,没输入正确就进不去程序?有教程吗?
我写了一个机器人排爆的系统,我想在运行程序的时候加入一个输入密码的机制,只有密码输入正确才能进入这个程序,否则就进不去。用户界面的代码如下:
import&java.awt.CardL
import&java.awt.C
import&java.awt.FlowL
import&java.awt.G
import&java.awt.Graphics2D;
import&java.awt.L
import&java.awt.event.ActionE
import&java.awt.event.ActionL
import&java.awt.event.KeyE
import&java.awt.event.KeyL
import&java.awt.geom.Rectangle2D;
import&java.util.StringT
import&javax.swing.*;
public&class&Windows{&&
&&&&public&static&void&&main(String[]&agrs){&&
&&&&&&&MyFrame&gameframe&=&new&MyFrame();&&
&&&&&&&gameframe.setTitle("Robots&&&Explosive");&&
&&&&&&&gameframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&&
&&&&&&&gameframe.setVisible(true);&&
class&MyFrame&extends&JFrame&{&&
Coordinator&Co=new&Coordinator();
JTextField&Text_n;
JTextField&Text_robot_a1;
JTextField&Text_robot_a2;
JTextField&Text_robot_a3;
JTextField&Text_exp1;
JTextField&Text_exp2;
JButton&btn_
Robot&robot_a;
int&n,exp_x,exp_y,robot_a_x[],robot_a_y[],robot_
float&robot[];
float&disX,disY;
Direction&
//private&Thread&thread&=&new&Thread(this);
public&MyFrame(){&&
btn=new&JButton("绘图");
btn_move=new&JButton("移动");
Text_n=new&JTextField(10);
Label&label_map&=&new&Label();
label_map.setText("Map&Block&Number:");
label_map.setForeground(Color.red);
Text_robot_a1=new&JTextField(10);
Label&label_robot_number&=&new&Label();
label_robot_number.setText("The&quantity&of&robots:");
label_robot_number.setForeground(Color.red);
Text_robot_a2=new&JTextField(50);
Label&label_robot_pos&=&new&Label();
label_robot_pos.setText("Robots'&positions:");
label_robot_pos.setForeground(Color.red);
Text_robot_a3=new&JTextField(10);
Label&label_exp&=&new&Label();
label_exp.setText("The&position&of&explosive:");
label_exp.setForeground(Color.red);
Text_exp1=new&JTextField(10);
Text_exp2=new&JTextField(10);
MyPanel&a&=&new&MyPanel();&
a.setLayout(new&FlowLayout(FlowLayout.LEFT,20,20));
addKeyListener(new&MyKeyListener());&&
a.add(label_map);
a.add(Text_n);
a.add(btn);
a.add(btn_move);
a.add(label_robot_number);
a.add(Text_robot_a1);
a.add(label_robot_pos);
a.add(Text_robot_a2);
//a.add(Text_robot_a3);
a.add(label_exp);
a.add(Text_exp1);
a.add(Text_exp2);
this.add(a);&&
btn.addActionListener(new&ButtonListen());
btn_move.addActionListener(new&ButtonListen());
setSize(800,800);&&
setResizable(false);//设置窗口是否可变
class&ButtonListen&implements&ActionListener&{
&&public&void&actionPerformed(ActionEvent&e)&{
&&n&=&Integer.parseInt(Text_n.getText());
&&robot_number&=&Integer.parseInt(Text_robot_a1.getText());
&&robot_a_x&=&new&int[robot_number];
&&robot_a_y&=&new&int[robot_number];
&&if(e.getSource()==btn){
&&exp_x&=&Integer.parseInt(Text_exp1.getText());
&&exp_y&=&Integer.parseInt(Text_exp2.getText());
&&String&str&=&Text_robot_a2.getText();
&&StringTokenizer&tokens&=&new&StringTokenizer(str);
&&for(int&i=0;i&&&robot_&i++){
&&String&dir&=&tokens.nextToken();
&&if(dir.equalsIgnoreCase("east"))
&&cur&=&Direction.E
&&if(dir.equalsIgnoreCase("west"))
&&cur&=&Direction.W
&&if(dir.equalsIgnoreCase("south"))
&&cur&=&Direction.S
&&if(dir.equalsIgnoreCase("north"))
&&cur&=&Direction.N
&&robot_a=new&Robot(Float.parseFloat(tokens.nextToken()),Float.parseFloat(tokens.nextToken()),cur);
&&Co.registerRobot(robot_a);
&&robot_a_x[i]=(int)robot_a.getPosX();
&&robot_a_y[i]=(int)robot_a.getPosY();
&&else&//if(e.getSource()==btn_move){
&&exp_x&=&Integer.parseInt(Text_exp1.getText());
&&exp_y&=&Integer.parseInt(Text_exp2.getText());
&&//System.out.println("disX:&"+disX&+&"&,&"&+&"disY:&"+&disY);
&&for(int&i=0;&i&&&robot_&i++){
&&robot_a_x[i]&=&Co.getPositionX(i);
&&robot_a_y[i]&=&Co.getPositionY(i);
&&Co.planPath((float)exp_x,(float)exp_y,disX,disY);
&&if(e.getSource()&==&btn_move){
boolean&flag&&=&
while(!flag){
Co.move((float)exp_x,(float)exp_y);
Co.planPath(exp_x,exp_y,disX,disY);
//System.out.println("disX:&"+disX&+&"&,&"&+&"disY:&"+&disY);
if(disX&==&0&&&&disY&==&0)
&&/*robot_a_x=(int)robot_a.getPosX();
&&robot_a_y=(int)robot_a.getPosY();
&&cur=robot_a.getDirection();
&&System.out.println(cur);*/
class&MyPanel&extends&JPanel{&&
&&public&MyPanel(){}&&
&&public&void&paint(Graphics&gra){&&
&&&super.paint(gra);&&&&
&&&Graphics2D&gra2&=&(Graphics2D)&&
&&&Rectangle2D&rect1&=&new&Rectangle2D.Float(exp_x-5,exp_y-5,10f,10f);&
&&&gra2.setPaint(Color.BLUE);
&&&gra2.fill(rect1);
&&&for(int&i=0;&i&&&robot_&i++){
&&&gra2.drawRect(robot_a_x[i]-5,robot_a_y[i]-5,&10,&10);
&&&for(int&i&=&190;&i&&=&190+n*20;&i&+=&20)&{
gra.drawLine(i,&190,&i,&190+n*20);
for(int&i&=&190;&i&&=&190+n*20;&i&+=&20)&{
gra.drawLine(190,&i,&190+n*20,&i);
&&&&repaint();&&
&&&class&MyKeyListener&implements&KeyListener{&&
&&&&//Override&&
&&&&public&void&keyPressed(KeyEvent&event){&&&
&&&&&&int&keyCode&=&event.getKeyCode();&&
&&&&&&&&if(keyCode&==&KeyEvent.VK_1){
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&}&&
&&&&public&void&keyReleased(KeyEvent&event){}&&
&&&&public&void&keyTyped(KeyEvent&event){}&&
&&&&&&&&//用于判别已经进入符合条件区域的方块&&
&&&&&&&&void&win(){&&
&&&&&&&&&&&&
&&&&&&&&}&&
当然,还有两个其他的类,分别是Robot和Coordinator,如果有人想看我可以回复的,但是这里就先不发了,感觉和目标联系不大。
跪求各位大神!!!
看看robot类和coodinator类
兄弟,哪个单位的

我要回帖

更多关于 java的输入 的文章

 

随机推荐