Программа, которая читает аргументы и преобразует все буквы заглавными буквами без использования toUpperCase()

92
12

Итак, я пытаюсь создать программу, которая читает аргументы и преобразует все буквы заглавными буквами без использования toUpperCase(). Единственный способ, которым я должен использовать для обработки отдельных букв, это использовать "- 'a' + 'A'"

Это то, что я сделал до сих пор

import java.util.Scanner;

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

for(int i = 0; i<args.length; i++){
for(int y=0; y<args[i].length(); y++){
if ('a' <= args[i].charAt(y) && args[i].charAt(y) <= 'z') {
args[i].charAt(y) = (char)(args[i].charAt(y) - 'a' + 'A');}
}
}

}

}

Я не понимаю, что я делаю неправильно, ошибка говорит:

ArgsTest.java:9: error: unexpected type
args[i].charAt(y) = (char)(args[i].charAt(y) - 'a' + 'A');
^
required: variable
found: value
1 error

спросил(а) 2021-01-19T19:47:28+03:00 9 месяцев назад
1
Решение
102

args[i].charAt(y) возвращает символ, а не переменную, поэтому вы не можете присвоить ему значение

Что вы должны сделать, это создать новую строку, добавить к ней заглавные буквы и распечатать ее:

    for(int i = 0; i<args.length; i++){
String result = "";
for(int y=0; y<args[i].length(); y++){
if ('a' <= args[i].charAt(y) && args[i].charAt(y) <= 'z') {
result += (char)(args[i].charAt(y) - 'a' + 'A');}
}
System.out.println(result);
}

ответил(а) 2021-01-19T19:47:28+03:00 9 месяцев назад
46

Как упомянул Дженс, charAt() возвращает значение, которое нельзя использовать в качестве переменной. Также, поскольку String является неизменяемым в Java, должна быть новая переменная для хранения измененных значений.

ответил(а) 2021-01-19T19:47:28+03:00 9 месяцев назад
46

Метод charAt() возвращает символ, а не переменную. Таким образом, вы не можете присвоить значение персонажу. В Java Мы можем присвоить значение только переменной, но не значению.

for(int i = 0; i<args.length; i++){
String s = "";
for(int y=0; y<args[i].length(); y++){
if ('a' <= args[i].charAt(y) && args[i].charAt(y) <= 'z') {
s+=(char)(args[i].charAt(y) - 'a' + 'A');
}
}
args[i]=s;
}

ответил(а) 2021-01-19T19:47:28+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема