Java 在类外声明变量后访问变量的范围
嗨,我有以下代码来获取字符串中最短的单词:-Java 在类外声明变量后访问变量的范围,java,variables,scope,Java,Variables,Scope,嗨,我有以下代码来获取字符串中最短的单词:- import java.util.Arrays; public class Kata { public static int findShort(String s) { int shortestLocation = null; String[] words = s.split(""); int shortestLength=(words[0]).length(); for(int i=1;i<words.lengt
import java.util.Arrays;
public class Kata {
public static int findShort(String s) {
int shortestLocation = null;
String[] words = s.split("");
int shortestLength=(words[0]).length();
for(int i=1;i<words.length;i++){
if ((words[i]).length() < shortestLength) {
shortestLength=(words[i]).length();
shortestLocation=shortestLength;
}
}
int p = shortestLocation;
return p;
}
}
导入java.util.array;
公共类卡塔{
公共静态int findShort(字符串s){
int shortestLocation=null;
字符串[]字=s.split(“”);
int shortestLength=(字[0]).length();
对于(int i=1;i
此^^行需要初始化为整数…非“null”0可以
String[] words = s.split("");
int shortestLength=(words[0]).length();
for(int i=1;i<words.length;i++){
这里不需要初始化p…只需返回最短位置
return p;
}
}
最后的代码是这样的
import java.util.Arrays;
public class Kata {
public static int findShort(String s) {
int shortestLocation = 0;
String[] words = s.split("");
int shortestLength=(words[0]).length();
for(int i=0;i<words.length;i++){
if ((words[i]).length() < shortestLength) {
shortestLength=(words[i]).length();
shortestLocation=shortestLength;
}
}
return shortestLocation;
}
}
导入java.util.array;
公共类卡塔{
公共静态int findShort(字符串s){
int shortestLocation=0;
字符串[]字=s.split(“”);
int shortestLength=(字[0]).length();
对于(int i=0;错误消息会准确地告诉您出了什么问题。不,这与作用域无关。您不能将null赋给基元类型int。这与作用域无关。我修复了它并将值更改为0,但现在它始终返回0。我变量的值从不更改为if语句之后返回的值。如果t length从0开始,你怎么能找到一个字符少于0的单词呢?“这个单词的长度小于0吗?”-不,从来都不是这样,所以变量永远不会改变,所以它总是0。你的起始最短长度应该是第一个单词的长度。为什么要初始化p?只需返回最短的位置。#off topicHi谢谢你的帮助。我已经让它工作了。我完全消除了最短的位置
并使用了返回最短的长度
d但我的困惑仍然存在,如果我初始化一个变量,比如x,并在一个单独的代码块中更改它的值,例如条件语句或循环。当我在条件块之外返回它时,它会返回我初始化的值还是经过条件语句后会更改的值?到IMPLINE put是否在if语句的任何位置或范围内更改?如果变量在循环内初始化,则它的作用域绑定到该循环,但是您没有这样做,您的变量在外部初始化,因此作用域与类相关。查看静态作用域rules@enemy123还有什么我可以澄清的吗?是的ks的帮助,所以我在循环外初始化的值在类中的任何地方都可以访问。但是如果该值在if语句中使用,并且我更改了它的值。例如x=1
现在如果我在if语句中使用它,它的值将更改为假设n。现在它的值是多少?如果我现在在该循环外访问它,它的值是多少直到1或者它被n取代了?如果我只是一个初学者,我很抱歉。我会的,再次感谢你的帮助。我还不够感谢你。
if ((words[i]).length() < shortestLength) {
shortestLength=(words[i]).length();
shortestLocation=shortestLength;
}
}
int p= shortestLocation;
return p;
}
}
import java.util.Arrays;
public class Kata {
public static int findShort(String s) {
int shortestLocation = 0;
String[] words = s.split("");
int shortestLength=(words[0]).length();
for(int i=0;i<words.length;i++){
if ((words[i]).length() < shortestLength) {
shortestLength=(words[i]).length();
shortestLocation=shortestLength;
}
}
return shortestLocation;
}
}