2013-10-09 3 views
0

Моя программа отлично работала, прежде чем я попытался реализовать варианты преобразования. Все, что я пытаюсь сделать, это реализовать параметр ввода U/u или L/l для преобразования строки в верхний или нижний регистр. Помоги пожалуйста?Конвертер Java Case, большая часть программы выполнена, есть проблемы с вариантами case?

 import java.util.Scanner; 

    public class CaseManipulation { 


    public static void main(String[] args) { 

     boolean up, low; 
     char up[] = {'U', 'u'}; 
     char low[] = {'L', 'l'}; 

     Scanner scanner = new Scanner(System.in); 
     System.out.print("Enter an input String: "); 
     String inputString = scanner.nextLine(); 
     System.out.print("Case Conversion Option(U/u for uppercase, L/l for lowercase):"); 
     char caseoption = scanner.nextLine(); 

     if (caseoption == up[]) { 
      System.out.println("Upper Case: " + toUpperCase(inputString)); 
     } else if (caseoption == low[]) { 
      System.out.println("Lower Case: " + toLowerCase(inputString)); 
     } 

     //is_uppercase(); 


     //System.out.println("Upper Case: " + toUpperCase(inputString)); 
     //System.out.println("Lower Case: " + toLowerCase(inputString)); 

     } 

     //public static boolean is_uppercase(char caseoption) { 
     // if (char caseoption ==) { 

     // } 

    //} 

     public static String toUpperCase(String inputString) { 
     String result = ""; 
     for (int i = 0; i < inputString.length(); i++) { 
      char currentChar = inputString.charAt(i); 
      char currentCharToUpperCase = Character.toUpperCase(currentChar); 
      result = result + currentCharToUpperCase; 
     } 
     return result; 
    } 

    public static String toLowerCase(String inputString) { 
     String result = ""; 
     for (int i = 0; i < inputString.length(); i++) { 
      char currentChar = inputString.charAt(i); 
      char currentCharToLowerCase = Character.toLowerCase(currentChar); 
      result = result + currentCharToLowerCase; 
     } 
     return result; 
    } 
} 

ответ

0

В принципе, ваше if условие сравнения ссылок объекта/памяти двух объектов, а не их значения ...

if (caseoption == up[]) {... 

caseoption никогда, вероятно, будет равна up ...

Вместо этого, вы должны сравнить их содержание ...

if (caseoption == up[0] || caseoption == up[1]) {... 

Более простое решение может быть преобразовать caseoption в одном случае использования, например ...

if (Character.toUpperCase(caseoption) == 'U') {...