Суббота, 2025-02-08, 02:49:54
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Урок 23.09
vladcherryДата: Пятница, 2011-09-23, 21:11:37 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
import java.util.Scanner;
public class randomaze {
public static void main(String[] args) {
// TODO Auto-generated method stub
int attempt=0; // счетчик попыток
int guess=0; // счетчик угадываний
int fromKeyboard=1;
while (fromKeyboard!=0) { // если ввели 0 - выходим
attempt++; //увеличиваем счетчик
fromKeyboard=getNumberFromKeyboard();
String strKey= Integer.toString(fromKeyboard); // получаем число с клавиатуры

// получаем случайное число генерацией и преобразовываем целое случайное в битовую строку
String strRnd=Integer.toBinaryString(getRandomNumber());

if (strKey.equals(strRnd)) { //угадал
guess++;
System.out.println("Вы угадали !");
System.out.println("Вы угадали:"+guess+" из "+attempt+" !");
}
else{ //неугадал
System.out.println("Не угадали ! Я загадал-"+strRnd);
System.out.println("Вы угадали:"+guess+" из "+attempt+" !");
}
// считаем количество совпадений
for (int s=1; s==8; s++){
System.out.println("сравниваем символ"+s);

}

}
}
public static int getNumberFromKeyboard() { // получение с клавиатуры потокa
System.out.println("Введите число(в формате ХХХХХХХХ, выход- Enter):");
Scanner input=new Scanner(System.in);
return input.nextInt();
}
public static int getRandomNumber() { //получение случайного числа от 1 до 255
return (int)(Math.random()*254+1);
}
}
 
CHerryДата: Суббота, 2011-09-24, 02:28:02 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
вариант генерировать число не оптимален, хотя и интересен.
Возникают числа меньше восьми знаков, а нули то впереди не дописываются.
Надо переписывать на генерацию восьми char-ов.
 
j_todeskyДата: Понедельник, 2011-09-26, 01:34:25 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 18
Репутация: 1
Статус: Offline
import java.util.*;
import java.io.*;
public class RandomNumbers {
public static char[] enterYourNumber()throws Exception
{
System.out.println("enter your binary number from 8 elements (for example 00101101) ");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String numbers = bf.readLine();
System.out.println(numbers);
char [] stringArray;
stringArray=numbers.toCharArray();
char [] numbersChar= stringArray;
return numbersChar;
}
public static char[] randomSetNumber(){
Random rand = new Random();
int d = rand.nextInt();
StringBuilder sb = new StringBuilder();
int x = 1;
for(int i = 0; i <8; i ++)
{
sb.append((d & x) == 0 ? "0" : "1");
x <<= 1;
}
StringBuilder result = sb.reverse();
System.out.println("result = " + result);
String sbToString= result.toString();
char [] stringArray;
stringArray=sbToString.toCharArray();
char [] convertSetNumberToChar= stringArray;
return convertSetNumberToChar;
}
public static void guessingNumbers(char randomSetNumber[], char enterYourNumber[]){
System.out.print("you guess ");
if(randomSetNumber[0] == enterYourNumber[0])
System.out.print("1st, ");
if (randomSetNumber[1]==enterYourNumber[1])
System.out.print("2nd, ");
if(randomSetNumber[2]==enterYourNumber[2])
System.out.print("3rd, ");
if(randomSetNumber[3]==enterYourNumber[3])
System.out.print("4th, ");
if(randomSetNumber[4]==enterYourNumber[4])
System.out.print("5th, ");
if(randomSetNumber[5]==enterYourNumber[5])
System.out.print("6th, ");
if (randomSetNumber[6]==enterYourNumber[6])
System.out.print("7th, ");
if(randomSetNumber[7]==enterYourNumber[7])
System.out.print("8th ");
System.out.print(" digits");
}
public static void main(String[] args)throws Exception
{
char [] randomSetNumber =randomSetNumber();
char []enterYourNumber= enterYourNumber();
while(enterYourNumber.length>8||enterYourNumber.length<8)
{
System.out.println("Error: entering digits error");
break;
}
guessingNumbers(randomSetNumber, enterYourNumber);

}

}

собственно частично написанный код !
 
MINIshaДата: Понедельник, 2011-09-26, 16:35:36 | Сообщение # 4
Генерал-майор
Группа: Администраторы
Сообщений: 21
Репутация: 1293
Статус: Offline
import java.io.*;

public class bynary {

public static void main (String[] args) throws IOException{
int rand = (int) (Math.random()*1010);//генерато случ. числа от 0 до 1010
char[] mass1;//массив символов для записи числа пользователя
char[] mass;//массив символов для записи случайного числа генератора
int count ;//счётчик совпавших цифр в числах
String bin;//переменная для преобразования в строку случайного числа генератора
BufferedReader bf ;// ну это и так понятно
String user;//переменная для преобразования в строку числа, введённого пользователем
int z ;//переменная для преобразования строки в число случайного числа генератора
int w;// переменная для преобразования строки в число, введённого пользователем
int countUs = 0;//счётчик попыток

//пытался сравнивать строки - не сравнивает!!! Пришлось переводить в числа.

bin = Integer.toBinaryString(rand);
System.out.println("Введите "+bin.length()+ "-значное бинарное число: ");
bf = new BufferedReader(new InputStreamReader(System.in));

do {

user = bf.readLine();

count=0;

mass1 = user.toCharArray();
mass = bin.toCharArray();
if (mass1.length!=mass.length) {
System.out.println("Введите указанное кол-во цифр!!! ");
}
else{
for (int i =0;i<mass.length;i++){

if (mass1[i]==mass[i]){
count++;

}
}
System.out.println("Количество совпавших цифр: "+count+" "+bin);//здесь я вывожу для
countUs++; //наглядности случ. число

}

w = Integer.parseInt(bin);
z = Integer.parseInt(user);

if (w==z){
System.out.println("Наконец-то вы угадали!!! с "+countUs+" попытки");
}
}
while(w!=z);
}

}

//Вопрос: кто-нибудь знает, в каком случае строки считаются равными?


Почему? ДА ЧЕРЕЗ ПОТОМУ КАК ЧТОЖ!

Сообщение отредактировал MINIsha - Понедельник, 2011-09-26, 16:37:32
 
DimonДата: Понедельник, 2011-09-26, 17:48:08 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 0
Статус: Offline
import java.io.*;

public class binary {
public static void main(String[] args) {
int a = getRandomNumber();
String str = Integer.toBinaryString(a);

BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
String inputLine= " "; //ввод строки с клавиатуры

try {
int count=0; //объявление счетчика
while ((inputLine = input.readLine()) !=null) {

System.out.println(inputLine);
//определение длины введенного массива
int cpCount = inputLine.codePointCount (0, inputLine.length());
System.out.println ("Number of input symbols: " + cpCount);

int y=0, i;
for (i=0; i<inputLine.length(); i++) //перебираем элементы вводимой строки

{
char ch1= inputLine.charAt(i);
char ch= str.charAt(i);
if (ch == ch1) // при совпадении символов
y ++;
}

if (y>0 && y<8)
{System.out.println ("quantity in text: " + y);
System.out.println (str);} //для проверки совпадений

else if (y==8)
{
float percent = 1/count*100;
System.out.println("At last! " +
"Quantity of your attempts is: " + count);
System.out.println ("Percent your attempts is: " + percent + "%" );
}
count ++; // счетчик попыток
}

}
catch (IOException e)
{System.err.println ("Error:" + e);}
}
public static int getRandomNumber()
{
Double value = Math.random();
int i= (int) (value*256);
return i;
}
}

Добавлено (2011-09-26, 17:48:08)
---------------------------------------------
Моя прога еще достаточно сырая...

 
j_todeskyДата: Среда, 2011-09-28, 00:34:05 | Сообщение # 6
Рядовой
Группа: Проверенные
Сообщений: 18
Репутация: 1
Статус: Offline
Поковырялся, чуть чуть перебрал, но все же есть к чему стремиться и что дорабатывать !

import java.util.*;
import java.io.*;
public class RandomNumbers {
public static char[] enterYourNumber()throws IOException
{
//ну, собственно, ввод элементов с клавиатуры
System.out.println(" enter your binary number from 8 elements (for example 00101101). ");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String numbers = bf.readLine();
// перевожу String в массив Char
char [] stringArray;
stringArray=numbers.toCharArray();
char [] numbersChar= stringArray;
return numbersChar;
}
public static char[] randomSetNumber(){
// задается рандомное число с помощью Стрингбуфера
// но как , я пока сам не особо разобрал ))
Random rand = new Random();
int d = rand.nextInt();
StringBuilder sb = new StringBuilder();
int x = 1;
for(int i = 0; i <8; i ++)
{
sb.append((d & x) == 0 ? "0" : "1");
x <<= 1;
}
StringBuilder result = sb.reverse();
// System.out.println("result = " + result);
// перевод из Стрингбуфера в Стринг, а затем в Чар массив
String sbToString= result.toString();
char [] stringArray;
stringArray=sbToString.toCharArray();
char [] convertSetNumberToChar= stringArray;
return convertSetNumberToChar;
}
// метод, отвечающий за сравнение
public static void guessingNumbers(char randomSetNumber[], char enterYourNumber[]){
System.out.print("you guess: ");
int count=0 ;
// сравниваются по отдельности каждый элемент массива
// если совпадает - выводит совпавшую цифру
// если нет - букву Х
if(randomSetNumber[0] == enterYourNumber[0])
System.out.print(enterYourNumber[0]);
else {
System.out.print("X");
}
if (randomSetNumber[1]==enterYourNumber[1])
System.out.print(enterYourNumber[1]);
else {
System.out.print("X");
}
if(randomSetNumber[2]==enterYourNumber[2])
System.out.print(enterYourNumber[2]);
else {
System.out.print("X");
}
if(randomSetNumber[3]==enterYourNumber[3])
System.out.print(enterYourNumber[3]);
else {
System.out.print("X");
}
if(randomSetNumber[4]==enterYourNumber[4])
System.out.print(enterYourNumber[4]);
else {
System.out.print("X");
}
if(randomSetNumber[5]==enterYourNumber[5])
System.out.print(enterYourNumber[5]);
else {
System.out.print("X");
}
if (randomSetNumber[6]==enterYourNumber[6])
System.out.print(enterYourNumber[6]);
else {
System.out.print("X");
}
if(randomSetNumber[7]==enterYourNumber[7])
System.out.print(enterYourNumber[7]);
else {
System.out.print("X");
}

}
public static void main(String[] args)throws IOException
{
System.out.println("To guess you have 3 attempts ");
char [] randomSetNumber = randomSetNumber();
// char [] enterYourNumber= enterYourNumber();
int i = 0;
do
{
char [] enterYourNumber= enterYourNumber();
if (randomSetNumber.length!=enterYourNumber.length)

{
System.out.println("Error: entering digits error");
}
else if(((enterYourNumber[0]!=1)||(enterYourNumber[0]!='0')&&
((enterYourNumber[1]!=1)||(enterYourNumber[1]!='0'))&&
((enterYourNumber[2]!=1)||(enterYourNumber[2]!='0'))&&
((enterYourNumber[3]!=1)||(enterYourNumber[3]!='0'))&&
((enterYourNumber[4]!=1)||(enterYourNumber[4]!='0'))&&
((enterYourNumber[5]!=1)||(enterYourNumber[5]!='0'))&&
((enterYourNumber[6]!=1)||(enterYourNumber[6]!='0'))&&
((enterYourNumber[7]!=1)||(enterYourNumber[7]!='0'))))
{
System.out.println("Error, enter only '1' or '0'");
}
else
{
if(randomSetNumber[0]==enterYourNumber[0]&&randomSetNumber[1]==enterYourNumber[1]&&
randomSetNumber[2]==enterYourNumber[2]&&randomSetNumber[3]==enterYourNumber[3]
&&randomSetNumber[4]==enterYourNumber[4]&&randomSetNumber[5]==enterYourNumber[5]
&&randomSetNumber[6]==enterYourNumber[6]&&randomSetNumber[7]==enterYourNumber[7])
{
System.out.println("You geuess all rhe number");
break;
}
guessingNumbers(randomSetNumber, enterYourNumber);

}
i++ ;
} while(i!=3);
}

}


Сообщение отредактировал j_todesky - Среда, 2011-09-28, 00:48:31
 
MINIshaДата: Среда, 2011-09-28, 16:59:22 | Сообщение # 7
Генерал-майор
Группа: Администраторы
Сообщений: 21
Репутация: 1293
Статус: Offline
j_todesky, Валерик!!! Всё это хорошо, но даже при вводе 0 или 1 этот код выдаёт ошибку ввода. Пишет вводите только цифры 1 и 0. По моему ошибка происходит в этом блоке:
Code
else if(((enterYourNumber[0]!=1)||(enterYourNumber[0]!='0')&&         
((enterYourNumber[1]!=1)||(enterYourNumber[1]!='0'))&&         
((enterYourNumber[2]!=1)||(enterYourNumber[2]!='0'))&&         
((enterYourNumber[3]!=1)||(enterYourNumber[3]!='0'))&&         
((enterYourNumber[4]!=1)||(enterYourNumber[4]!='0'))&&         
((enterYourNumber[5]!=1)||(enterYourNumber[5]!='0'))&&         
((enterYourNumber[6]!=1)||(enterYourNumber[6]!='0'))&&         
((enterYourNumber[7]!=1)||(enterYourNumber[7]!='0'))))         
         

А именно (enterYourNumber[1]!=1)||(enterYourNumber[1]!='0') и т. д. Единица без одинарных кавычек !!! И с операторами сравнения тоже бок - нужно везде ставить &&!!!

Кстати о циклах:
Code
for(int i=0; i<enterYourNumber.length; i++){
(enterYourNumber[i]!='1')||(enterYourNumber[i]!='0')
}


будет работать так же.

Валерий! А за это :
Code
StringBuilder sb = new StringBuilder();       
int x = 1;       
for(int i = 0; i <8; i ++)       
{       
sb.append((d & x) == 0 ? "0" : "1");       
x <<= 1;       
}


Super Respect и уважуха!!! biggrin biggrin biggrin

Добавлено (2011-09-28, 16:59:22)
---------------------------------------------
import java.io.*;

public class bynary {
static int userControl(char[] Luser){//функция-фильтр символов введённых пользователем
int f = 0;

for (int j=0; j<Luser.length;j++){



if ((Luser[j]=='0') || (Luser[j]=='1')){

f++;

}
}
return f;


}

public static void main (String[] args) throws IOException{
int rand = (int) (Math.random()*1010);//генерато случ. числа от 0 до 1010
char[] mass1;//массив символов для записи числа пользователя
char[] mass;//массив символов для записи случайного числа генератора
int count ;//счётчик совпавших цифр в числах
String bin;//переменная для преобразования в строку случайного числа генератора
BufferedReader bf ;// ну это и так понятно
String user;//переменная для преобразования в строку числа, введённого пользователем
int z =0;//переменная для преобразования строки в число случайного числа генератора
int w = 0;// переменная для преобразования строки в число, введённого пользователем
int countUs = 0;//счётчик попыток
int f=0;
//пытался сравнивать строки - не сравнивает!!! Пришлось переводить в числа.

bin = Integer.toBinaryString(rand);//перевод десятичн. в двоичную строку

bf = new BufferedReader(new InputStreamReader(System.in));




do {
System.out.println("Введите "+bin.length()+ "-значное бинарное число: ");

user = bf.readLine();//считываю с клавы данные и записываю в user

f=userControl(user.toCharArray());//передаю функции массив символов из user

count=0;// обнуляю счётчик попыток (неверный ввод не считается попыткой)

w = Integer.parseInt(bin);//перевожу строку случ. числа в число

mass1 = user.toCharArray();//массив символов пользователя

mass = bin.toCharArray();//массив символов случ.числа

if (f!=user.length())//если результат функции не равен длине строки, введённой пользователем.
/*функция userControl устрояна таким образом что если длина user совпадает с её результатом,
то проверка на ввод прошла успешно, т.е. в тексте только единицы и нули*/
System.out.println("Вводите только 1 или 0 !!!");


else if (f==user.length())//если результат функции равен длине строки, введённой пользователем.
{
if (mass1.length!=mass.length)/*сравниваю длины массивов для определения введения
правильного количества символов 1 и 0*/
{
System.out.println("Введите указанное кол-во цифр!!! ");
}
else
{
for (int i =0;i<mass.length;i++)/*цикл на совпадение цифр в массивах чисел пользователя
и случайного числа*/
{

if (mass1[i]==mass[i])//если символ равен - добавляю счётчик совпадений
{
count++;

}
}
System.out.println("Количество совпавших цифр: "+count+" ");
countUs++; //если все вышеизложенные проверки пройдены, добавляю счётчик попыток.

}


z = Integer.parseInt(user);/*если все вышеизложенные проверки пройдены перевожу
число строку user в число*/

if (w== z)//если число userа совпало со случайным - то вывод сообщения:
{
System.out.println("Наконец-то вы угадали!!! с "+countUs+"-й попытки");
}

}

}

while( w!= z);//выполнять цикл, пока пользователь не угадает число.

}

}

Вроде робит и без сбоев!!!


Почему? ДА ЧЕРЕЗ ПОТОМУ КАК ЧТОЖ!

Сообщение отредактировал MINIsha - Среда, 2011-09-28, 10:51:53
 
  • Страница 1 из 1
  • 1
Поиск: