Я делаю программу-палач для своей практики, и я останавливаюсь на том, как напечатать правильный символ, введенный пользователем с частичным ответом. Все работает оптимально, просто нужна помощь в конкатенации. ?????????? заключается в отображении места, для которого мне нужна логика.

import java.io.*;
import java.util.Scanner;

class hangman{
public static void main(String args[]){

int counter=6;
String m="ashish";
char mj[] = m.toCharArray();


//for printing the puzzle 
for(int j=0;j<m.length();j++)
{

if(mj[j]%3==0)
    {   
      System.out.print(" "+mj[j]);
     }
else   System.out.print(" ___ ");
 }    
  System.out.println();

//taking the input from user
 Scanner scanner=new Scanner(System.in);

do{
char c=scanner.next().charAt(0);

   System.out.println(c+"-----scanning complete");
   for(int i=0;i<m.length();i++)
    {
     if(c==mj[i])
     {
  String n= ?????????????????????;

           counter--; }   

    }while(counter != 0);
     }}
-2
user2849331 31 Янв 2014 в 09:54
2
Я бы порекомендовал вам использовать IDE с автоформатированием.
 – 
Christian
31 Янв 2014 в 09:58
Вы говорите «все работает» - я вижу это гигантское выражение, содержащее вопросительные знаки, которое никогда не скомпилируется ни на одной из известных мне машин. Я не уверен, что он "работает".
 – 
Makoto
31 Янв 2014 в 10:02
За исключением того, что если вы удалите его, который я уже проверил, работает нормально, просто нужна логика, которая может заменить эти вопросительные знаки. Вопросительный знак предназначен для отображения той части, для которой мне нужна логика.
 – 
user2849331
31 Янв 2014 в 10:06

1 ответ

Лучший ответ

Вам нужно сохранить какой-то набор символов, который у игрока был правильный. Попробуйте что-то вроде этого:

import java.io.*;
import java.util.Scanner;

class hangman {
public static void main(String args[]){

    int counter = 6;
    String m = "ashish";
    char mj[] = m.toCharArray();
    char correct[] = new char[mj.length];


    //for printing the puzzle 
    for(int j=0;j<m.length();j++) {
        if(mj[j]%3==0) {   
            System.out.print(" "+mj[j]);
            correct[j] = mj[j];
        }
        else {
            System.out.print(" ___ ");
        }
    }    

    System.out.println();

    //taking the input from user
    Scanner scanner=new Scanner(System.in);

    do {
        char c=scanner.next().charAt(0);

        System.out.println(c+"-----scanning complete");
        for(int i=0;i<m.length();i++) {
            if(c==mj[i]) {
                correct[i] = c;
                counter--;
            }
            // This is the default value of a char in Java.
            if (correct[i] == '\u0000') {
                System.out.print(" ___ "); 
            } else {
                System.out.print(correct[i]);
            }
        }

    } while(counter != 0);
  }
}
1
Sanketh Katta 31 Янв 2014 в 10:26
Большое спасибо, Санкет! Я знаю, что это не полный логический код, но я новичок и спасибо, что помогли мне, теперь я могу редактировать, чтобы сделать его лучше.
 – 
user2849331
31 Янв 2014 в 10:43