2016-02-09 4 views
-2

Спасибо за помощь ребятам. Посмотрел на массивы. Думаю, что у меня это есть, но мне сложно с ним распечатать. Есть идеи? Он печатает тест слова, но только после нескольких пространств (предполагается, что тот, где мои письма, как предполагается, чтобы показать) Придумал это:Программа декодирования в Java

import java.util.Scanner; 

public class q1 { 
    public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    char[] aArray = new char[10]; 
    String[] Acypher = { "D", "D", "W", "E", "L", "H", "O", "R" }; 

    for (int i = 0; i < 10; ++i) { 
     int input = in.nextInt(); 
     switch (input) { 
     case 1: 
      String newin1 = Acypher[1]; 
      break; 
     case 2: 
      String newin2 = Acypher[2]; 
      break; 
     case 3: 
      String newin3 = Acypher[3]; 
      break; 
     case 4: 
      String newin4 = Acypher[4]; 
      break; 
     case 5: 
      String newin5 = Acypher[5]; 
      break; 
     case 6: 
      String newin6 = Acypher[6]; 
      break; 
     case 7: 
      String newin7 = Acypher[7]; 
      break; 

     default: 
      System.out.println("Translation unknown. Please enter a new number."); 
      --i; 
      break; 

     } 
    } 
    String aArrayDc = new String(aArray); 
    System.out.println(aArrayDc + "test"); 
} 
} 
+0

Почему у вас есть два: numInputs ++; – Abdelhak

+0

Я предлагаю googling следующее: массивы (для хранения ввода), in.HasNext() (для чтения из сканера) и инструкции switch (для декодирования). – TangledUpInBlue

ответ

0

Это является возможным решением, но в следующий раз сделать свою домашнюю работу, не спрашивая для решения

import java.util.Scanner; 
public class q1 { 
    public static void main(String[] args) { 
     char[] cipher = { 'D', 'W', 'E', 'L', 'H', 'O', 'R' }; 
     char decoded[] = new char[10]; 
     Scanner in = new Scanner(System.in); 
     for (int i = 0; i < 10; ++i) { 
      int num; 
      do { 
       num = in.nextInt(); 
      } while (num < 1 || num > 7); 
      decoded[i] = cipher[num - 1]; 
     } 
     System.out.println(decoded); 
    } 
} 
+0

Откуда вы знаете домашнее задание? Он что-то написал? –

0

Возможно, вы захотите переписать свои итерации в цикл for.

for(int i = 0; i < 10; ++i) 
{ 
    int input = in.nextInt(); 
    //switch statement 
} 

Вам нужно использовать оператор switch, чтобы найти букву для каждого номера, мы добавляем случай по умолчанию для обработки неправильного номера. Этот переключатель переходит в цикл for.

switch(input) 
{ 
    case 1: 
     //store letter to array 
     break; 
    ... 
    default: 
     --i; 
     System.out.println("Incorrect number, please enter a new number"); 
} 

Чтобы сохранить букву каждого матча, мы создаем массив, мы уже знаем, что это нуждается в длине 10. Эта линия идет до цикла:

char[] decodedCharacters = new char[10] 

Put это один в каждый переключатель заявление:

decodedCharacters[i] = "D"; //another letter for each case. 

И это один, чтобы напечатать все символы:

String decodedString = new String(decodedCharacters); 
System.out.println(decodedString); 

EDIT: См. Ответ @Guillaume для подхода, оставляющего большую гибкость для других комбинаций. Однако его ответ не обрабатывает неправильное число.

+0

Спасибо за помощь! Просто получил возможность сесть и, надеюсь, получить его, но столкнулся с проблемой печати. Можете ли вы взглянуть и посмотреть, есть ли что-то в этом роде? Новый код находится в исходном сообщении. –

+0

Вы пишете каждую букву переменной 'newin1', но на самом деле вы ничего не делаете с ней. Просто замените любое появление 'newin1' и т. Д. На' aArray [i] ':) –

+0

Возможно, вы также захотите поймать исключение, созданное при вводе чего-то другого, кроме введенного' int'. –

Смежные вопросы