A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张盼 中级黑马   /  2014-6-20 21:07  /  1451 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张盼 于 2014-6-21 22:54 编辑

个位大神,看看这个程序,目前的代码第一遍猜价格运行正常,第二遍的时候每次都让用户选择是否退出,怎样做才能每次猜对价格在提示选择退出?

/*
需求:
通过Scanner编写一个猜商品价格的小程序
思路:先选择需要竞猜的商品。
输入商品的价格。
判断价格是否正确,如果不正确,继续猜,如果正确,请用户选择是否继续,如果继续,
再次选择要竞猜的商品,如果不继续,则退出程序。
*/
import java.util.Scanner;
class Test
{
static Scanner sc = new Scanner(System.in);//对Scanner进行初始化
static int p = 0;       //对商品价格进行初始化
static boolean falg = true;     //定义一个falg,用于控制是否继续循环
public static void main(String[] args)
{
  demo();
}
public static void sop(Object obj) {
  System.out.println(obj);
}
public static void demo() {
  sop("请选择您要竞猜的商品:1(电视),2(冰箱),3(空调)4(洗衣机)");
  int num = sc.nextInt();
  switch (num) {     //选择商品,根据选择的商品进入该商品对应的系统
   case 1:
    sop("欢迎进入电视价格竞猜系统");
    goods1();
    break;
   case 2:
    sop("欢迎进入冰箱价格竞猜系统");
    goods2();
    break;
   case 3:
    sop("欢迎进入空调价格竞猜系统");;
    goods3();
    break;
   case 4:
    sop("欢迎进入洗衣机价格竞猜系统");
    goods4();
    break;
   default:
    sop("对不起,请选择正确的商品!");
    demo();     //如果选择的商品不在备选列表,重新进入选择商品的系统进行选择
    break;
  }
}
public static void goods1() {
  p = 3000;      //确定商品的价格并调用猜价系统
  demo1();
}
public static void goods2() {
  p = 2000;
  demo1();
}
public static void goods3() {
  p = 3500;
  demo1();
}
public static void goods4() {
  p = 1500;
  demo1();
}
public static void demo1() {
  do{
   sop("请输入商品价格:");
   int num = sc.nextInt();
   int op = 0;
   if(num >= (p - 100) & num < p){
    op = 1;
   }else if(num <= (p + 100) & num > p) {
    op = 2;
   }else if(num < (p - 100)) {
    op = 3;
   }else if(num > (p + 100)) {
    op = 4;
   }
   switch(op)
   {
    case 1:
     sop("很接近了,还是有点低,请继续!");
     break;
   
    case 2:
     sop("很接近了,还是有点高,请继续!");
     break;
    case 3:
     sop("猜低了,请继续!");
     break;
    case 4:
     sop("猜高了,请继续!");
     break;
    default:
     sop("恭喜你,猜对了!");
     falg = false;    //将falg置为false
     break;
   }if(falg == false) {
    sop("0(退出),1(继续)");
    int num2 = sc.nextInt();
    if(num2 == 1) {
     demo();
    }else
     break;  
   }
  }while (falg);
}
}

2 个回复

倒序浏览
package com.itheima;

import java.util.Scanner;

/*
需求:
通过Scanner编写一个猜商品价格的小程序
思路:先选择需要竞猜的商品。
输入商品的价格。
判断价格是否正确,如果不正确,继续猜,如果正确,请用户选择是否继续,如果继续,
再次选择要竞猜的商品,如果不继续,则退出程序。
*/
class TestDemo
{               
        public static void main(String[] args)
        {               
                demo();
               
        }
        static Scanner sc = new Scanner(System.in);//对Scanner进行初始化
        static int p = 0;       //对商品价格进行初始化
        static boolean falg = true;     //定义一个falg,用于控制是否继续循环
public static void sop(Object obj) {
  System.out.println(obj);
}
public static void demo() {
  sop("请选择您要竞猜的商品:1(电视),2(冰箱),3(空调)4(洗衣机)");
  int num = sc.nextInt();
  switch (num) {     //选择商品,根据选择的商品进入该商品对应的系统
   case 1:
    sop("欢迎进入电视价格竞猜系统");
    goods1();
    break;
   case 2:
    sop("欢迎进入冰箱价格竞猜系统");
    goods2();
    break;
   case 3:
    sop("欢迎进入空调价格竞猜系统");;
    goods3();
    break;
   case 4:
    sop("欢迎进入洗衣机价格竞猜系统");
    goods4();
    break;
   default:
    sop("对不起,请选择正确的商品!");
    demo();     //如果选择的商品不在备选列表,重新进入选择商品的系统进行选择
    break;
  }
}
public static void goods1() {
  p = 3000;      //确定商品的价格并调用猜价系统
  demo1();
}
public static void goods2() {
  p = 2000;
  demo1();
}
public static void goods3() {
  p = 3500;
  demo1();
}
public static void goods4() {
  p = 1500;
  demo1();
}
public static void demo1() {
  do{
   sop("请输入商品价格:");
   int num = sc.nextInt();
   int op = 0;
   if(num >= (p - 100) & num < p){
    op = 1;
   }else if(num <= (p + 100) & num > p) {
    op = 2;
   }else if(num < (p - 100)) {
    op = 3;
   }else if(num > (p + 100)) {
    op = 4;
   }
   switch(op)
   {
    case 1:
     sop("很接近了,还是有点低,请继续!");
     break;

    case 2:
     sop("很接近了,还是有点高,请继续!");
     break;
    case 3:
     sop("猜低了,请继续!");
     break;
    case 4:
     sop("猜高了,请继续!");
     break;
    default:
     sop("恭喜你,猜对了!");
     falg = false;    //将falg置为false
     break;
   }if(falg == false) {
    sop("0(退出),1(继续)");
    int num2 = sc.nextInt();
    if(num2 == 1) {
            falg = true;
            //你一次竞价结束后,falg值为flase,所以在继续进行并调动demo后,switch之后完成后会进行if判断,
            //此时值为falg为false,所以会提示退出,所以在选择1后要把falg重置为true;
            demo();
    }else
     break;  
   }
  }while (falg);
}
}
红色字体为需要改动部分,及分析原因,希望能帮到你

回复 使用道具 举报
江夷 发表于 2014-6-20 21:33
package com.itheima;

import java.util.Scanner;

谢谢了,知道怎么做了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马