一、题目描述
二、思路
语法基础:StringBuilder 类似列表,可以更改元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package Practice;
public class tt { public static void main(String[] args) { String str = "banana" ; System.out.println(str.indexOf( 'z' )); // -1 System.out.println(str.indexOf( 'a' , 2 )); // 3
StringBuilder words = new StringBuilder(); for ( int i = 0 ; i < 5 ; i++) words.append( '*' ); // "*****" System.out.println(words.length()); // 5 System.out.println(words.indexOf( "a" )); // -1 System.out.println(words.indexOf( "*" , 1 )); // 1 words.setCharAt( 3 , 'a' ); // "***a*" System.out.println(words); } } |
三、代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
package Practice;
import java.util.Scanner;
public class Guess { public static String words[] = { "banana" , "telecommunication" , "programming" , "bupt" }; public static boolean [] guessed = new boolean [words.length]; // 判断猜过 public static int num_guessed = 0 ; // 猜过的单词数量 public static char keep; // 是否继续y or n
public static void main(String[] args) { // for(int i = 0; i < guessed.length; i ++ ) System.out.println(guessed[i]); Scanner scanner = new Scanner(System.in);
do { // 随机产生要猜测的单词 ans int index = ( int ) (Math.random() * words.length); String ans = words[index]; // 再来一次时的重复检测 while (guessed[index] == true ) { index = ( int ) (Math.random() * words.length); ans = words[index]; }
// 初始化,StringBuilder类似list StringBuilder guessedWord = new StringBuilder(); for ( int i = 0 ; i < ans.length(); i++) guessedWord.append( '*' );
int numberOfCorrectLettersGuessed = 0 , numberOfMisses = 0 ;
// 模拟过程 while (numberOfCorrectLettersGuessed < ans.length()) { System.out.print( "(Guess) Enter a letter in word " + guessedWord + " > " ); String s = scanner.nextLine(); char letter = s.charAt( 0 );
if (guessedWord.indexOf(letter + "" ) >= 0 ) { // 猜中,但重复,不算错误次数 System.out.println( "\t" + letter + " is already in the word" ); } else if (ans.indexOf(letter) < 0 ) { // 猜错 System.out.println( "\t" + letter + " is not in the word" ); numberOfMisses++; } else { // 猜中,进行标记与赋值 int k = ans.indexOf(letter); while (k >= 0 ) { guessedWord.setCharAt(k, letter); numberOfCorrectLettersGuessed++; k = ans.indexOf(letter, k + 1 ); } } }
System.out.println( "The word is " + ans + ". You missed " + numberOfMisses + ((numberOfMisses <= 1 ) ? " time" : " times" ));
guessed[index] = true ; num_guessed += 1 ;
if (num_guessed < words.length) { System.out.print( "Do you want to guess for another word? Enter y or n> " ); keep = scanner.nextLine().charAt( 0 ); }
} while (keep == 'y' && num_guessed < words.length);
if (keep == 'y' ) System.out.println( "Perfect!!!" ); else System.out.println( "You have guessed " + num_guessed + ((num_guessed <= 1 ) ? " word~" : " words~" ));
} } |
四、效果图
全部猜完
中途退出
到此这篇关于java实战之猜字小游戏的文章就介绍到这了,更多相关java猜字游戏内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.csdn.net/whq___/article/details/115861711