| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 458 人关注过本帖
标题:java新手 求助 字符比较
只看楼主 加入收藏
梦醒放如初
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-5-12
结帖率:33.33%
  已结贴   问题点数:20  回复次数:4   
java新手 求助 字符比较
package cn.sxt.q;

import java.util.Random;
import java.util.Scanner;
/**
 * 字符猜测小游戏
 * @author
 * time : 2018.05.12
 */

public class ZiFuCaiCeYouXi {
    private static char[] cha = new char[4];//用于存储随机字符
    private static char[] chr = new char[4];//用于存储输入字符
    private static int[] car = new int[4];//用于存储比较结果
    static Scanner scanner = new Scanner(System.in);
    static String str1;
    public static void main(String[] args) {
        while(true){
            System.out.println("欢迎来到字符猜测小游戏!");
            SuiJi();
            for( int i = 0 ; i < 4 ; i++) System.out.print(cha[i]);
            System.out.println();
            System.out.println("请输入4位字母");
            String str = scanner.next();
            chr = str.toCharArray();
            if(str.length()!=4) System.out.println("请按规定输入字符!");else{
                if(car[0] != 4) Pub();
                if(str1 == "end") return;
            }
        }
    }
    private static  void Pub() {
        //该方法适用于规定比较结果
        ZiFuBiJiao();
        car[3] = 500 - (car[2]-1)*10;
        if(car[0] != 4){
            System.out.println("你猜对的字符给个数为:"+car[1]);
            System.out.println("你猜对的字符给位置为:"+car[0]);
        }else{
            System.out.println("恭喜你猜对了!");
            System.out.println("你获得的分数为:"+car[3]);
            str1 = "end";
        }
        System.out.println("输入end结束!");
        String str1 = scanner.next();
    }
    private static  void SuiJi() {
        //该方法适用于产生随机字符型数组
        String str = "abcdefghigklmnopqrstuvwxyz";
        Random random = new Random();
        int index = random.nextInt(str.length());
        for(int i = 0 ; i < 4 ; i++){
        cha[i] = str.charAt(index);
        }
    }
    private static void ZiFuBiJiao() {
        // 该方法用于两个字符串的比较
        int[] q = new int[2];
        for ( int i = 0 ; i < 4 ; i++){
            if(cha[i]==chr[i]) q[0]++;
            for( int j = 0 ;  j<4 ; j++) if(cha[i]==chr[j]) q[1]++;
        }
        for(int i = 0 ; i<4 ; i++) car[i] = q[i];
        car[2]++;
    }
        
}
2018-05-12 15:53
流氓兔1号
Rank: 4
等 级:贵宾
威 望:10
帖 子:75
专家分:152
注 册:2017-6-10
  得分:20 
这个应该是String对象不能直接处理数组下标的越界错误,你将String类对象通过toCharArray()方法转化为字符数组试试
2018-05-12 23:19
流氓兔1号
Rank: 4
等 级:贵宾
威 望:10
帖 子:75
专家分:152
注 册:2017-6-10
  得分:0 
或者用toString()方法把数组转化为String字符串
2018-05-12 23:22
梦醒放如初
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-5-12
  得分:0 
回复 2楼 流氓兔1号
能具体说一下吗?不是很懂!  没用string直接处理数组吧!


[此贴子已经被作者于2018-5-13 09:52编辑过]

2018-05-13 09:46
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:22
帖 子:378
专家分:1655
注 册:2018-2-6
  得分:0 

假如人生没有梦想,和咸鱼有什么区别!
2018-05-13 11:15







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041227 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved