求一个java程序

用户循环输入4位会员号。判断是否中奖。输入n结束操作。说明:程序开始时生成一个0-9的随机数字,当用户会员号的百位与十位的差值与随机数字相等时为中奖。效果如下图:请输入四... 用户循环输入4位会员号。判断是否中奖。输入n结束操作。
说明:程序开始时生成一个0-9的随机数字,当用户会员号的百位与十位的差值与随机数字相等时为中奖。效果如下图:
请输入四位会员号:
1234
很遗憾。没中。
是否继续?(y/n)
y
请输入四位会员号:
2135
恭喜你中奖了。
是否继续?(y/n)
n
程序结束。
我是初学者。我自己写的代码很简单。程序都对。就是那个随机数老是出问题。怎么解决?

我用的是int i=(int)(Math.random()*10);
int id=0410;//假设
int shi=id/10%10;
int bai=id/100%10;
int a=Math.abs(shi-bai); 这样好像是可以。但是总有问题。是哪里错了?

int i= (int)(Math.random()*10);
int id=0410;
int shi=id/10%10;
int bai=id/100%10;
int a=Math.abs(shi-bai);
String in="";
Scanner input=new Scanner(System.in);
do{
System.out.println("请输入四位会员号:");
id=input.nextInt();
if(a==i){
System.out.println("恭喜你。中奖了。");
}else{
System.out.println("很遗憾。没有中。");
}
System.out.println("是否继续?(y/n)");
in=input.next();
}while(in.equals("y"));
System.out.println("程序结束。");

帮我看看哪里错了。
展开
 我来答
akfucc
2011-10-19 · TA获得超过5454个赞
知道大有可为答主
回答量:1771
采纳率:0%
帮助的人:2175万
展开全部
public static void main(String[] args) {
int random = -1;
Scanner sc = new Scanner(System.in);
while (true) {
// 生成随机数据,用于游戏开始或重新开始
if (random == -1) {
random = (int) (Math.random() * 10);
System.out.println(random);
}
System.out.println("请输入四位会员号:");
String str = sc.next();
int num = 0;
try {
num = Integer.parseInt(str);
} catch (Exception e) {
System.out.println("输入错误,请继续");
continue;
}
if (num < 1000 || num > 9999) {
System.out.println("输入错误,请继续");
continue;
}
int b = num / 100 % 10;
int s = num / 10 % 10;
// 差值
int diff = Math.abs(b - s);
if (diff == random) {
System.out.println("恭喜你中奖了。");
// 准备重新开始计算
random = -1;
}else{
System.out.println("很遗憾。没中。");
}
System.out.println("是否继续?(y/n)");
if (sc.next().equals("n")) {
break;
}
}
}
hellomanyx
2011-10-19 · 超过16用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:28.6万
展开全部
import java.util.*;

public class Prize{

public static void main(String [] args){

int num=(int)(Math.random()*10);
System.out.println(num);
Scanner s=new Scanner(System.in);

while(true){
System.out.println("请输入四位会员号:");
String member=s.next();
char [] test= member.toCharArray();
if(member.equals("n"))
{
System.out.println("程序结束。");

break;}
else{
if(member.length()!=4||test[0]>'9'||test[0]<'0'||test[1]>'9'||test[1]<'0'||test[2]>'9'||test[2]<'0'||test[3]>'9'||test[3]<'0'){
System.out.println("invalid input.Please input again");

}
else{

int val = Integer.valueOf(test[2]) - Integer.valueOf(test[3]);
if(val==num){
System.out.println("恭喜你中奖了。");
}
else{
System.out.println("很遗憾。没中。");
}

}

}

}

}

}

随机数就是Math.random() 阿。有什么问题么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友57c441c
2011-10-19 · TA获得超过307个赞
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:216万
展开全部
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Demo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo demo = new Demo();
int ranNum = (int) (Math.random()*10);
boolean flag =true;
System.out.println("请输入四位会员号:");
while(1==1){

String value = demo.getInput();
flag = demo.checkInput(value,ranNum);
if(!flag){
break;
}
}

}

public Boolean checkInput(String value,int ranNum){

try{
int valueNum = Integer.parseInt(value);
if(value.length()==4){

valueNum = valueNum%1000;
int bai = valueNum/100;
valueNum = valueNum%100;
int shi = valueNum/10;
if(Math.abs(bai-shi)==ranNum){
System.out.println("恭喜你中奖了");
}else{
System.out.println("很遗憾,没中");
}
System.out.println("是否继续");
return true;

}else{
System.out.println("输入不合法!");
System.out.println("请输入四位会员号:");
return true;
}
}catch(Exception e){
if(value.toUpperCase().equals("Y")){
System.out.println("请输入四位会员号:");
return true;
}else if(value.toUpperCase().equals("N")){
System.out.println("程序结束!");
return false;
}else{
System.out.println("输入中含有非数字!");
System.out.println("请输入四位会员号:");
return true;
}
}
}

public String getInput(){
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String userNum = reader.readLine();
return userNum;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

}

测试过的,建个Demo类,直接跑就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5195152
2011-10-19 · TA获得超过1164个赞
知道大有可为答主
回答量:1314
采纳率:0%
帮助的人:699万
展开全部
package cn.qbq.questions;

import java.util.Scanner;

/**
* 用户循环输入4位会员号。判断是否中奖。输入n结束操作。
*
* @author a483183
*
*/
public class Reward {

/**
* @param args
*/
public static void main(String[] args) {
// 程序开始时生成一个0-9的随机数字,
int luckyNumber = (int) (Math.random()*10);

boolean isContinue;
do {

// 请输入四位会员号
System.out.println("请输入四位会员号");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
char[] inputChars = input.toCharArray();

int num = Integer.valueOf(inputChars[2]) - Integer.valueOf(inputChars[3]);

// 当用户会员号的百位与十位的差值与随机数字相等时为中奖。
if (luckyNumber != num) {
System.out.println(input + "很遗憾。没中。");
} else {
System.out.println(input + "恭喜你中奖了。");
}

// 是否继续?(y/n)
System.out.println("是否继续?(y/n)");
scanner = new Scanner(System.in);
input = scanner.nextLine();

isContinue = "y".equalsIgnoreCase(input);

} while (isContinue);

}

}

随机数出什么问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式