Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在类外声明变量后访问变量的范围_Java_Variables_Scope - Fatal编程技术网

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;
        }
  }