private static String Encrypt(String strTarget) {
// TODO Auto-generated method stub
int len = strTarget.length()-1;
String destination = "";
for (int i = 0; i<len; i++)
{
if (strTarget.charAt(i) != ' ')
{
char a = strTarget.charAt(i);
int b = (int) a;
b = strTarget.charAt(i)-4;
a = (char) b;
if ( b<70 && b>64)
{
b = strTarget.charAt(i)+26;
a = (char) b;
destination += a;
}
}
return destination;
}
Я добавил новую строку с именем destination
, добавил к ней символы и возвратил ее.
EDIT
Однако, похоже, чтовы можете захотеть изменить фактические String
, strTarget
.
. Для этого не следует передавать strTarget в качестве параметра, поскольку передает его по значению, а не по ссылке.
Чтобы действительно изменить строку, передайте StringBuilder
, как указано здесь .(Кстати, здесь есть ссылка.)
РЕДАКТИРОВАТЬ # 2
Скажем, у вас есть метод.Назовите это foo
.Foo принимает int
в качестве параметра и устанавливает его в 1:
public static void foo(int i) {
i = 1;
}
Теперь вы хотите проверить свой метод:
public static void main(String[] args) {
int i = 0;
foo(i);
System.out.println(i);
}
Это должно вывести 1, верно? NO .Это не так.Это печатает "0"
.Вы можете проверить это, если хотите.Это потому, что целое число «передано по значению» .Когда что-то передается по значению, виртуальная машина обычно делает его копию и передает копию в метод.
Поэтому, когда вы выполняете i=1
в вашем методе foo
, вы фактически устанавливаетекопия от i
до 1
, а не i
.Таким образом, i
остается неизменным.
Существует другой тип передачи параметров, который называется передача по ссылке .Когда что-то передается по ссылке, метод изменяет фактическую переменную.
Массивы, например, передаются по ссылке.Возьмите этот код, например:
public static void foo(int[] i) {
i[0] = 1; // i must have at least one element.
}
public static void main(String[] args) {
int[] i = new int[1];
foo(i);
System.out.println(i[0]);
}
В этом примере i
изменяется в foo
, так как он передается по ссылке.
В исходном методе вы вводитетип возврата как void
.С типом возврата void вы не можете вернуть зашифрованный String
.Поэтому мне пришло в голову, что, возможно, вы захотите передать по ссылке и изменить strTarget
.
Для этого вместо передачи strTarget
вы должны передать StringBuilder
.,Вы можете создать его с помощью new StringBuilder(strTarget)
, и он будет автоматически pass by reference
.Если бы вы хотели этого, то я бы сгенерировал destination
String
(как указано выше), а затем изменил StringBuilder
, чтобы изменить strTarget
на destination
String
.
Надеюсь, это помогло.